我在调用不同视图控制器中的方法时遇到了一些麻烦。
这是我的设置: ViewController1 - > ViewController2 - > ViewController3
ViewController1使用WEPopoverController调用调用ViewController2:
UIViewController2 *viewCon2 = [[UIViewController2 alloc] init];
navPopover = [[WEPopoverController alloc] initWithContentViewController:viewCon2];
[navPopover presentPopoverFromRect:CGRectMake(0, 0, 50, 57)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown
animated:YES];
我希望ViewController3能够调用ViewController1中存在的方法。由于ViewController3没有直接从ViewController1初始化,我无法弄清楚如何使用委托方法来调用ViewController1的方法。
有什么想法吗?
答案 0 :(得分:3)
课程之间有多种沟通方式,您可以阅读更多here。
答案 1 :(得分:1)
vieDidLoad
中添加。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodFromViewController3) name:@"Message" object:nil];
(请删除dealloc中的观察者)
然后当你想从viewcontroler 3调用视图1中的方法时.. 发布通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"Message" object:nil userInfo:nil];
当您发布时,在第一个视图中调用通知 methodFromViewController3
方法(您必须在视图控制器中添加它)...在您的情况下..您可以将其更改为您要调用的现有方法的名称..
答案 2 :(得分:0)
如果VC3引用了VC2,VC2引用了VC1,你可以在VC3中这样做:
ClassOfViewController2* vc2 = [self viewController2];
ClassOfViewController1* vc1 = [vc2 viewController1];
[vc1 myAwesomeMethod];