我使用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