UISplitViewController在启动纵向时不显示弹出按钮

rpe*_*ayr 17 portrait launch ipad uisplitviewcontroller

我正在做一个基于UISplitViewController的iPad应用程序.当我的应用程序在potrait中启动时,我对toobar按钮有一点问题.不显示显示弹出窗口的按钮.然而,当我将iPad旋转到横向然后再回到肖像时,按钮显示!

看起来在启动时没有调用以下方法(这是我有代码显示按钮):

- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController: (UIPopoverController *)pc
Run Code Online (Sandbox Code Playgroud)

应用程序启动时不会调用此方法,但仅在有旋转时调用.更奇怪的是,我使用Xcode UISplitViewController模板+核心数据制作了一个测试应用程序(类似于我正在使用的应用程序,并且是我用来制作此应用程序的模板).在我没有编写一行代码的测试应用程序上,按钮显示我以纵向模式启动应用程序时,上面的方法也会在启动时调用,而不是我的其他应用程序.有没有人有类似的问题?

最后,从Apple文档中不清楚在首次显示UISplitViewController时是否应该调用此方法:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewControllerDelegate_protocol/Reference/的reference.html%23 // apple_ref/DOC/UID/TP40009454

小智 23

"Kshitiz"有正确的概念.首先,我在viewDidLoad方法中设置self.splitviewController.delegate = self,设置此委托有点迟.所以,我试图在早期阶段设置委托,这是awakeFromNib方法.然后它运作良好.

所以,问题是在视图已经由viewDidLoad加载之后,那么委托将无法工作,它将在一些活动(例如旋转iPad)后工作一段时间.所以比viewDidLoad更早的阶段是awakeFromNib.

这是有效的代码:

- (void) awakeFromNib{
    [super awakeFromNib];
    self.splitViewController.delegate = self;
}
Run Code Online (Sandbox Code Playgroud)