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

时间:2011-10-24 03:25:01

标签: objective-c ios ipad delegates uisplitviewcontroller

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

然后我使用以下代码推送新的详细视图控制器(而不是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拆分视图控制器委托方法或手动调用它们?

1 个答案:

答案 0 :(得分:3)

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

你需要做的是从呈现视图控制器传递按钮,因为它已经像这样绑定到popover:

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

// Push the newViewController