我有一个带有组的应用程序,当我在画像模式下启动应用程序时,它缺少“UISplitViewController”UIBarButtonItem。我需要转到横向模式,然后返回到画像模式才能使其出现。当我在横向模式下启动它时,它就在那里。下面是一些截图来说明这一点:
这是在纵向模式下启动应用程序的时候
这是在横向模式下,从纵向模式旋转后:
这是在从横向模式旋转回纵向模式之后:
发布于 2011-05-27 12:28:39
几天前,同样的事情也发生在我身上。您只需确保细节视图是splitView的委托。如果尝试在细节视图的viewDidLoad
中设置代理,则在加载splitView (使用根tableView控制器)之前不会进行设置。这就是为什么它不会被放置,直到你切换到横向和回来。设置委托的最好方法是在您的应用程序委托实现文件中(当您创建UISplitViewController时,这将是最好的想法),或者在根tableView控制器中使用如下内容
- (void)viewDidLoad {
self.splitViewController.delegate = [self.splitViewController.viewControllers objectAtIndex:1];
}
这使得细节视图成为委托,因此当它在tableView控制器加载之后加载时,它将调用您的splitViewController:willHideViewController:...
方法。
当然,这可能不是你遇到的情况。我只是假设,既然我有完全相同的行为,它可能是相同的原因。如果这不起作用,那就直说吧,我们就直奔主题了。
发布于 2012-10-04 03:47:51
我也搞不清楚这个问题,因为我的代码和IB连接似乎与Apple的多细节视图示例源代码相同。
通过将倒数第二行中的self.splitViewController (左视图控制器类的一个属性)的引用更改为自动传递给该方法的svc,我能够让它正常工作。我在调试器中注意到,由于某些原因,前者尚未实例化。(内存位置为0x00000000)。
- (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc {
// Keep references to the popover controller and the popover button, and tell the detail view controller to show the button.
barButtonItem.title = @"Menu";
self.popoverController = pc;
self.rootPopoverButtonItem = barButtonItem;
UIViewController <SubstitutableDetailViewController> *detailViewController = [self.splitViewController.viewControllers objectAtIndex:1];
[detailViewController showRootPopoverButtonItem:rootPopoverButtonItem];
}
https://stackoverflow.com/questions/6147284
复制相似问题