我使用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. 設置TabBarItem標題
- 3. 設置委託對象中的委託方法沒有響應
- 4. 委託所有方法但設置器
- 5. 不叫(委託設置爲self)的UIImagePickerController委託方法
- 6. 委託方法沒有被調用,設置委託給自己?
- 7. 無法訪問委託中的方法
- 8. 委託方法
- 9. 委託方法
- 10. 無法觸發UITableView委託方法「DidSelectRowAtIndexPath」
- 11. 在哪裏設置UiTextField委託方法在自定義UiView中
- 12. 無法在iOS上獲得位置 - 不調用委託方法
- 13. UIWebView委託方法
- 14. NSURLConnection委託方法
- 15. NSURLConnection委託方法
- 16. 的委託方法
- 17. AsyncSocket委託方法
- 18. UITableView委託方法
- 19. UITableView委託方法
- 20. 在init中設置併發送自定義委託方法?
- 21. 我應該在哪種方法中設置UITextField的委託?
- 22. python中的方法委託
- 23. ARC問題 - 無法傳遞方法委託?
- 24. 在awakeFromNib中設置委託
- 25. 如何在調用UITableview委託在uiviewcontroller中委託方法之前調用NSURLConnection委託方法
- 26. UIButton子類委託方法問題
- 27. 使用UIPickerView委託方法的問題
- 28. 有沒有更好的方法?委託 - >委託 - >委託
- 29. 無法在C#中使用委託的方法屬性?
- 30. 無法在c#中調用委託ResponseRecieved.Invoke()方法#
+1,因爲它適用於didDismissWithButtonIndex:方法。但是你的「封鎖主線」解釋並不令人滿意。 「封鎖」一詞的含義是什麼,爲什麼禁止(立即)設置一個簡單的標題屬性? – 2011-12-29 07:02:55