我使用UIActionSheet
的方法showFromTabBar:
來顯示操作表。在代理方法actionSheet:clickedButtonAtIndex:
中,我嘗試通過調用[email protected]"New Title"
來更改當前的UITabBarItem
的標題,其中self
是當前的TabBarController的ViewController。當我這樣做時,TabBarItem的標題變成一個空字符串(「」)。當我在動作表的委託方法中發佈NSNotification
,並嘗試以相同方式更改通知處理程序方法中的標題時,應用程序崩潰(在控制檯上沒有任何輸出)。但是當我撥打[self.tabBarItem performSelectorOnMainThread:@selector(setTitle:) withObject:@"New Title" waitUntilDone:NO]
時,它適用於兩種變體。這是SDK中的一個錯誤,不是嗎?無法在actionSheet委託方法中設置tabBarItem標題
0
A
回答
1
基本上,UIActionSheet
在調用actionSheet:clickedButtonAtIndex:
的過程中阻塞了主線程(或至少與它交互),可能是由UITabBar
提供/顯示的結果。
您基本上正在調度setTitle:
任務,稍後將完成performSelectorOnMainThread:withObject:waitUntilDone:NO
調用。這將工作得很好。它與使用如下塊非常相似:
dispatch_async(dispatch_get_main_queue(), ^{
self.tabBarItem.title = @"New Title";
});
如果該語法適合您,那麼這很好。
但有一個更簡單的方法。只需使用委託方法actionSheet:didDismissWithButtonIndex:
就可以調用此方法,顧名思義,當UIActionSheet
已被解除時,它將不再阻止其他呼叫。
相關問題
- 1. 無法將CLLocationManager委託設置爲無
- 2. 設置委託對象中的委託方法沒有響應
- 3. 設置TabBarItem標題
- 4. 無法訪問委託中的方法
- 5. 不叫(委託設置爲self)的UIImagePickerController委託方法
- 6. 委託方法
- 7. 委託方法
- 8. 無法觸發UITableView委託方法「DidSelectRowAtIndexPath」
- 9. 在哪裏設置UiTextField委託方法在自定義UiView中
- 10. NSURLConnection委託方法
- 11. 的委託方法
- 12. UITableView委託方法
- 13. 在init中設置併發送自定義委託方法?
- 14. 在awakeFromNib中設置委託
- 15. 無法在C#中使用委託的方法屬性?
- 16. 無法在全局方法中分配委託
- 17. UIButton子類委託方法問題
- 18. 有沒有更好的方法?委託 - >委託 - >委託
- 19. 在其委託回調方法中釋放委託對象
- 20. 在子視圖控件上設置委託方法
- 21. 無法設置標題
- 22. 無法設置UINavigationController標題
- 23. 標題無法設置 - SlimFramework
- 24. 在協議中創建委託方法
- 25. 在Objective-c問題中訪問委託靜態方法問題
- 26. 如何從Cocoa中的子類委託方法調用超類委託方法?
- 27. scrollViewWillEndDraggin:WithVelocity:targetContentOffset委託方法錯誤
- 28. 委託方法不工作
- 29. [MapKit]實現委託方法
- 30. 委託方法objective-c
+1,因爲它適用於didDismissWithButtonIndex:方法。但是你的「封鎖主線」解釋並不令人滿意。 「封鎖」一詞的含義是什麼,爲什麼禁止(立即)設置一個簡單的標題屬性? – 2011-12-29 07:02:55