访问父视图控制器

Accessing parent view controller

我有一个 mainViewController,里面有一个 container view。我正在尝试从 container view.

访问 theMainViewController

这是我的代码:

self.theMainViewController = (theMainViewController *)self.parentViewController;

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:idx inSection:0];
[self.theMainViewController .tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom];

这行不通。当我对它进行 nslog 时,self.theMainViewController 给出了 nil 值。然后我替换了:

self.parentViewController

至:

self presentingViewController

它给了我相同的结果。如何从 container view's class 访问 mainViewController

更新

这是我的设置:Static table view inside UIViewController [Xcode 5](我无法添加图片,所以该答案中发布的图片与我的设置相同。)

您可以在父视图控制器中使用 "prepareForSegue" 将 self 传递给容器视图,如下所示:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     if ([[segue identifier] isEqualToString:@"containerview_myIdentifier"]) {

         ContainerViewController *vc = [segue destinationViewController];
         [vc setReferenceToParentVC:self];
    }
}

在 ContainerViewController 中创建一个 ParentViewController 类型的合成 属性 并将其 属性 设置为 self。

以下是您应该在情节提要中看到的内容:

MainViewController - ContainerView

您在 containerview 中创建委托,主视图将从该委托中实现。

你可以试试这个: http://www.infragistics.com/community/blogs/torrey-betts/archive/2014/05/29/passing-data-between-view-controllers-ios-obj-c.aspx