从另一个ViewController中调用方法

时间:2013-09-16 17:02:31

标签: iphone ios objective-c

Noob问问fellas,但我无法得到它。

我有一个View Controller,可以在一个单独的View Controller中加载。我希望能够按下按钮来调用父View控制器中的方法。所以这就是我所拥有的

父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。有什么想法我做错了吗?

4 个答案:

答案 0 :(得分:2)

由于parentVC引用,我认为weak已发布。尝试使用此方法。

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

答案 1 :(得分:0)

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

parent.whatever = blah;

答案 2 :(得分:0)

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

[self.parentViewController methodToCall];

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

[(TheParentController *)self.parentViewController methodToCall];

这当然假定子视图控制器的视图是父视图控制器视图的子视图。希望这有帮助

答案 3 :(得分:0)

检查您的父视图控制器是否已分配。

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

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