UISplitViewController在推送新的detailView时不调用委托方法

我根据Master-Detail Application设置了一个故事板,将详细视图嵌入到导航控制器中,并添加一个新的表视图控制器对象,我将用它作为第二个详细视图控制器。

然后,我使用以下代码推送新的详细视图控制器(而不是segue,因为我同时推动根视图和详细视图控制器。仅显示详细视图代码)。

// 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委托方法。 如果我在纵向模式下执行此操作,在推送detailViewController之后,下拉masterView弹出按钮的按钮不显示UNTIL我旋转到横向模式然后再回到纵向模式。

如何调用willHideViewController / willShowViewController拆分视图控制器委托方法或手动调用它们?

因此,根据我的发现,它不会调用方法,因为方向没有改变。

您需要做的是从呈现视图控制器传递按钮,因为它已经绑定到弹出窗口,如下所示:

 if(self.navigationItem.leftBarButtonItem != nil) { newViewController.navigationItem.leftBarButtonItem = self.navigationItem.leftBarButtonItem; } // Push the newViewController