访问父视图控制器
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 中创建委托,主视图将从该委托中实现。
我有一个 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 中创建委托,主视图将从该委托中实现。