Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 访问父视图控制器_Ios_Objective C_Uiviewcontroller_Uicontainerview_Parentviewcontroller - Fatal编程技术网

Ios 访问父视图控制器

Ios 访问父视图控制器,ios,objective-c,uiviewcontroller,uicontainerview,parentviewcontroller,Ios,Objective C,Uiviewcontroller,Uicontainerview,Parentviewcontroller,我有一个mainViewController,其中有一个容器视图。我正试图从容器视图访问主视图控制器 这是我的密码: self.theMainViewController = (theMainViewController *)self.parentViewController; NSIndexPath *indexPath = [NSIndexPath indexPathForRow:idx inSection:0]; [self.theMainViewController .tableVie

我有一个
mainViewController
,其中有一个
容器视图
。我正试图从
容器视图
访问
主视图控制器

这是我的密码:

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

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:idx inSection:0];
[self.theMainViewController .tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom];
这不管用
self。当我对其进行
nslog
时,主视图控制器给出一个
nil
值。然后我替换了:

self.parentViewController
致:

它给了我同样的结果。如何从
容器视图的
类访问
mainViewController

更新

这是我的设置:(我无法添加图像,因此该答案中发布的图像与我的设置相同。)

您可以使用父视图控制器中的“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

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

MainViewController-ContainerView

您在containerview中创建委托,mainview将从此委托实现

您可以尝试以下方法:

显示如何设置容器视图控制器和子视图控制器。已更新question@Jessica您可能需要按层次重新定义视图控制器。下面是如何实现这一点的精彩描述。什么类型的对象是
ReferenceToParentVC
?@Jessica它应该是“ParentViewController”,例如,我的一个例子如下
@property(非原子)PagesViewController*referencetorotviewcontroller
只需确保在容器视图控制器的头部声明ParentViewController头,如下所示
#import“PagesViewController.h”
哦,这是我的错,我忘了这会创建循环依赖循环。因此,将
pacesViewController
声明为
@class pacesViewController
然后定期在.mSo中使用
#import
声明,我应该执行
[vc setReferenceToParentVC:self]?是的。这很好,因为它将变量
refereceToParentVC
设置为保存容器视图的
ParentViewController
的实例。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     if ([[segue identifier] isEqualToString:@"containerview_myIdentifier"]) {

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