我正在做一个基于 UISplitViewController 的 iPad 应用程序。当我的应用在 potrait 中启动时,我的工具栏按钮有点问题。不显示显示弹出框的按钮。
但是,当我将我的 iPad 旋转为横向然后返回纵向时,按钮显示!
看起来启动时未调用以下方法(这是我有显示按钮的代码):
- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController: (UIPopoverController *)pc
应用程序启动时不会调用此方法,只有在旋转时才会调用此方法。更奇怪的是,我使用 Xcode UISplitViewController 模板 + 核心数据制作了一个测试应用程序(这与我正在开发的应用程序相似,并且是我用来制作此应用程序的模板)。在我没有编写任何代码的测试应用程序上,当我以纵向模式启动我的应用程序时,按钮会显示,并且在启动时也会调用上述方法,而不是我的其他应用程序。有没有人有类似的问题?
最后,从苹果文档中还不清楚是否应该在首次显示 UISplitViewController 时调用此方法:
http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewControllerDelegate_protocol/Reference/Reference.html%23//apple_ref/doc/uid/TP40009454
最佳答案
“Kshitiz”有正确的概念。首先我在 viewDidLoad 方法中设置了 self.splitviewController.delegate = self,设置这个委托(delegate)有点晚了。因此,我尝试在早期阶段设置委托(delegate),即 awakeFromNib 方法。然后它运作良好。
所以,问题是viewDidLoad已经加载了view之后,那么delegation就不起作用了,它会在一些事件(比如旋转iPad)之后工作一段时间。所以比 viewDidLoad 更早的阶段是 awakeFromNib。
这是有效的代码:
- (void) awakeFromNib{
[super awakeFromNib];
self.splitViewController.delegate = self;
}
关于ipad - 启动纵向时,UISplitViewController 不显示弹出按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5855639/