我有一個for循環,它在另一個類中調用UIAlertView彈出菜單在特定條件下觸發的類方法。如果顯示彈出窗口,我想逃避循環。實施這種溝通的通常策略是什麼?檢測過去的UIAlertView
0
A
回答
4
我認爲有可能找到一些方法來檢測是否有一些UIAlertView現在被暴露。 但它不是很好。以這種方式構建的程序可能會隨着框架內臟的微小變化而崩潰。你需要一些對象之間的連接。
1.使用委託模式。這是最好的方式。
2.如果對象之間的連接過於複雜或難以預測,導致難以使用委派,請使用通知模式(請閱讀有關NSNotificationCenter類)。
0
您可以在兩個類都可以訪問的地方聲明BOOL。例如:
// declare this variable somewhere that will be accessible to both classes, i.e. a singleton
BOOL alertIsShown;
// when showing the UIAlertView:
alertView.delegate = self;
[alertView show];
alertIsShown = YES;
// UIAlertViewDelegate method
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
alertIsShown = NO;
}
// in your for loop
for(...) if(alertIsShown) break;
1
如果在出現錯誤時類方法顯示UIAlertView,那麼向調用方返回一個錯誤代碼可能會有意義,如果錯誤代碼返回,可能會停止迭代。
一些NS方法做這樣的事情,在那裏你傳遞一個NSError **的方法,如果有一個錯誤,它設置指針,即:
NSError* error = nil;
for (id object in SomeObjects) {
[NSDoSomething:object error:&error];
if (error) break;
}
相關問題
- 1. 使用UIAlertView檢測按鈕單擊
- 2. 檢測其UIAlertView中被點擊
- 3. 檢索的UIAlertView中
- 4. 檢查過去的日期
- 5. 檢索過去的結果
- 6. 如何去檢測dismissModalViewControllerAnimated
- 7. 檢測UITextField失去焦點
- 8. 無法檢測的去protobuf的
- 9. TFS註釋去除檢測的代碼
- 10. UIAlertView自動換行失去了iOS8?
- 11. android如何檢測應用程序是否在過去運行
- 12. jQuery - 檢測表單是否通過按ENTER發送出去
- 13. 檢測是否是過去某個時刻(如15:00)
- 14. JavaScript檢查日期不是過去或過去
- 15. 檢查UIAlertView是否可見
- 16. 用logcat檢查過去的日誌?
- 17. 溢出檢測減去2個多頭
- 18. 檢測bb10應用程序去背景
- 19. 檢測USB鼠標連接/去附着
- 20. 檢測Android應用程序去背景
- 21. 檢測互聯網連接並顯示UIAlertview Swift 3
- 22. 檢測並隱藏UIAlertView(或顯示一個視圖)
- 23. 是否可以通過iOS5中的另一個UIAlertView顯示UIAlertView
- 24. 檢測通過PC
- 25. 檢測通過ALAsset
- 26. 檢測過期的會話
- 27. 檢測通過的HttpApplication
- 28. ios觸發segue通過uialertview
- 29. 去測試總是通過爲什麼?
- 30. Angularjs e2e測試過去/未來比較