访问父视图控制器

时间:2015-05-04 22:15:10

标签: ios objective-c uiviewcontroller uicontainerview parentviewcontroller

我有一个mainViewController,其中包含container view。我试图从theMainViewController访问container view

这是我的代码:

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

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

这不起作用。当我self.theMainViewController nil时,nslog会给出self.parentViewController 值。然后我换了:

self presentingViewController

为:

mainViewController

它给了我相同的结果。如何从container view's班级访问-- synchronize databases MERGE [ClientDB].[dbo].[Table] trgt USING [MasterDB].[dbo].[Table] src ON trgt.ID = src.ID WHEN MATCHED THEN -- IF src.LastModified > trgt.LastModified -- if the source is newer UPDATE SET trgt.[Info] = src.[Info] -- update the target -- ELSE -- UPDATE SET src.[Info] = trgt.[Info] -- otherwise update the source WHEN NOT MATCHED BY SOURCE THEN DELETE WHEN NOT MATCHED BY TARGET THEN INSERT ([Info]) VALUES (src.[Info]);

更新

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

以下是您应该在故事板中看到的内容: enter image description here

答案 1 :(得分:0)

MainViewController - ContainerView

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

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