主视图和详细视图控制器之间的通信

时间:2012-07-10 23:30:04

标签: objective-c xcode uisplitviewcontroller

我正在为此项目使用Xcode 4.3.3和Storyboards。

我有一个主视图控制器,它使用导航控制器向下钻取几个级别,直到它到达列表。当用户从该列表中选择一个单元格时,我希望详细视图控制器更改为新的视图控制器。然后,当用户导航回主视图控制器的顶部时,我希望弹出详细视图控制器并再次显示原始视图控制器。

我可以使用segues进行一些工作,但是尝试让新的详细视图控制器弹出并显示原始视图时会变得非常混乱。它还会弄乱我的BarButtonItemPresenter委托,它以纵向模式控制主视图弹出窗口。有没有办法以编程方式执行此操作?如果是这样,将非常感谢示例代码。

2 个答案:

答案 0 :(得分:0)

使用从主视图控制器到详细视图控制器的segue解决它。在属性检查器中,将“目标”设置为“细节分割”,并将“标识符”设置为有意义的内容(我使用“显示客户”)。然后在主视图控制器中调用它......

[self performSegueWithIdentifier:@"Show Customer" sender:self];
    [self setDelegate:(id<CustomerTableViewControllerDelegate>)[self.splitViewController.viewControllers objectAtIndex:1]];
//call some method here to prepare your detail view controller

答案 1 :(得分:0)

答案有点晚了,你的问题有点令人困惑,但是......

我看到你已经标记了uiSplitViewController。我试图在iPad上弹出一个View控制器时感到难过,但这不起作用。

[self.navigationController popViewControllerAnimated:YES]; 

尝试改为:

[self.detailViewController.navigationController popViewControllerAnimated:YES];

iPad上的分割视图控制器似乎使用了第二个导航控制器,请记住这一点。

很抱歉,如果我的答案偏离正轨。