objective-c - UISplitViewController 在推送新的DetailView 时不调用委托(delegate)方法

标签 objective-c ios ipad delegates uisplitviewcontroller

我设置了一个基于主从应用程序的 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/

相关文章:

objective-c - 如何将 NSString 转换为 NSDate

ios - 如何在 X 时间后在后台杀死应用程序

iphone - 如何去除字符串中的空格?

ios - 动态删除元素时如何使用自动布局?

ios - 实体关系中的数据属性更改但不触发 nsfetchresultsController

iphone - 您知道 UISplitViewController 的开源替代品吗?

ios - didSelectRowAtIndexPath 仅通过长按嵌入在容器 View 中的 tableView 调用

iphone - 如何以编程方式绘制三角形

iphone - UIMenuController 没有出现

objective-c - 简单的可点击非矩形形状