Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.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
Iphone 从一个Viewcontroller在另一个Viewcontroller中调用方法_Iphone_Ios_Objective C - Fatal编程技术网

Iphone 从一个Viewcontroller在另一个Viewcontroller中调用方法

Iphone 从一个Viewcontroller在另一个Viewcontroller中调用方法,iphone,ios,objective-c,Iphone,Ios,Objective C,没有问题,伙计们,但我搞不懂 我有一个视图控制器,在一个单独的视图控制器中加载。我希望能够按下按钮调用父视图控制器中的方法。这就是我得到的 母VC: .h -(void)callParentMethod; .m -(void)viewDidLoad{ self.childVC.parentVC = self; } -(void)callParentMethod{ NSLog(@"Hello?"); } 儿童VC: .h #import

没有问题,伙计们,但我搞不懂

我有一个视图控制器,在一个单独的视图控制器中加载。我希望能够按下按钮调用父视图控制器中的方法。这就是我得到的

母VC:

   .h
    -(void)callParentMethod;



    .m

    -(void)viewDidLoad{
    self.childVC.parentVC = self;
    }

-(void)callParentMethod{
NSLog(@"Hello?");
}
儿童VC:

.h

#import "TheParentViewController.h"

@property (nonatomic, weak) TheParentViewController *parentVC;


.m

-(void)addThis{
[self.parentVC callParentMethod];
}

我没有得到任何错误,子VC方法
addThis
似乎调用了该方法,但从未调用过NSLog。你知道我做错了什么吗?

我认为
parentVC
发布是因为
引用太弱了。尝试使用这种方法

YourParentVC *parent = (YourParentVC*)[self presentingViewController];

parent.whatever = blah;
-(void)addThis{
NSLog(@"%@", self.parentVC);
[self.parentVC callParentMethod];
}

我不太确定您的应用程序是什么,但您不应该保留对父视图控制器的引用。UIViewController已经有一个名为
parentViewController
的属性,您可以通过以下方式使用该属性:

[self.parentViewController methodToCall];
这将调用父视图控制器上的方法。您可能需要强制转换对象以调用自定义方法

[(TheParentController *)self.parentViewController methodToCall];

当然,这假定子视图控制器的视图是父视图控制器视图的子视图。希望这有助于检查您的父视图控制器是否已分配

   parentnvc = [ParentViewController alloc]initWithNibName:@"somenib" bundle:nil];

如果已分配并初始化parentvc并调用该方法

,则可以在子视图控制器中创建属性

@class ParentVC;
@property(weak,nonatomic)ParentVC *parentVCreference;
并获取父视图控制器的参考,如下所示

self.parentVCreference=(ParentVC*)self.parentViewController;
[self.parentVCreference parentVCMethod];
然后您可以从ParentVC调用任何公开的方法,如下所示

self.parentVCreference=(ParentVC*)self.parentViewController;
[self.parentVCreference parentVCMethod];
注意:您需要在ChildVC实现文件中导入ParentVC的头