Iphone 从一个Viewcontroller在另一个Viewcontroller中调用方法
没有问题,伙计们,但我搞不懂 我有一个视图控制器,在一个单独的视图控制器中加载。我希望能够按下按钮调用父视图控制器中的方法。这就是我得到的 母VC: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
.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的头