我有一个带有UISplitViewController的应用程序,当我在potrait模式下启动应用程序时,它缺少“Group”UIBarButtonItem。我需要转向横向模式并返回potrait以使其显示。当我以横向模式启动时它就在那里。这是一些明确的截图:
这是在纵向模式下启动应用程序的时间
从纵向模式旋转后,这是横向模式:
这是从横向模式旋转回纵向模式后:
答案 0 :(得分:4)
几天前我发生了同样的事情。您只需确保详细视图是splitView的委托。如果您尝试在详细视图的viewDidLoad
中设置委托,则在splitView加载(使用根tableView控制器)之后才会设置委托。这就是为什么在你切换到横向和背面之前它不会被放置。设置委托的最佳方法是在您的app委托实现文件中(当您创建UISplitViewController时,这是最好的主意)或在根tableView控制器中使用类似
- (void)viewDidLoad {
self.splitViewController.delegate = [self.splitViewController.viewControllers objectAtIndex:1];
}
这使得详细视图委托,因此当它在tableView控制器加载后加载时,它将调用您的splitViewController:willHideViewController:...
方法。
当然,这可能不是你的情况。我只是假设因为我有完全相同的行为,它可能是同样的原因。如果这不能解决问题,那就说出来,我们就会找到原因
答案 1 :(得分:0)
我也无法解决这个问题,因为我的代码和IB连接似乎与Apple的Multiple Detail Views示例源代码相同。
我能够通过将第二行到最后一行的 self.splitViewController (左视图控制器类的属性)中的引用更改为 svc <来使其正常工作/ strong>自动传递给方法。我在调试器中注意到前者由于某种原因尚未实例化。 (内存位置为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];
}