我设置了一个基于主从应用程序的 Storyboard,将详细信息 View 嵌入到导航 Controller 中,并添加了一个新的 TableView Controller 对象,我将其用作第二个详细信息 View Controller 。
然后,我使用以下代码推送新的详细信息 View Controller (而不是 segue,因为我同时推送 Root View 和详细信息 View Controller 。仅显示详细信息 View 代码)。
// Push the detailView view controller:
NewClass *newViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"test"];
newViewController.navigationItem.hidesBackButton = YES;
self.splitViewController.delegate = newViewController;
[self.detailViewController pushViewController:newViewController animated:YES];
这工作得很好,除了在推送之前或之后永远不会调用 splitView 委托(delegate)方法。如果我在纵向模式下执行此操作,则在推送DetailViewController之后,下拉masterView弹出窗口的按钮不会显示,直到我旋转到横向模式然后返回纵向模式。
如何调用 willHideViewController/willShowViewController Split View Controller 委托(delegate)方法或手动调用它们?
最佳答案
因此,根据我的发现,它不会调用该方法,因为方向没有改变。
您要做的就是从呈现 View Controller 传递按钮,因为它已经绑定(bind)到弹出窗口,如下所示:
if(self.navigationItem.leftBarButtonItem != nil) {
newViewController.navigationItem.leftBarButtonItem = self.navigationItem.leftBarButtonItem;
}
// Push the newViewController
关于objective-c - UISplitViewController 在推送新的DetailView 时不调用委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7871037/