2011-10-06 162 views
2

以我的ViewController我已经创建了包含一个按钮和一群其他元件的图。当按下按钮时,我想从父ViewController调用一个方法。我试过了:调用视图控制器的方法从子视图

[self.superview buttonPressedMethod]; 

但是,superview不是ViewController而是UIView。无论如何要做到这一点?

回答

1

这也正是目标/动作机制是什么。使视图控制器中的方法成为IBAction。将视图控制器设置为按钮的目标,并将该方法设置为其操作。这应该是你需要做的一切。

+0

该按钮是以编程方式创建的。 ViewController的目标是什么? –

+1

视图控制器没有目标,它*是目标。你可以使用'-addTarget:action:forControlEvents:'设置按钮的目标和动作。将视图控制器指定为目标,并将您要调用的方法指定为操作。请注意,该方法必须具有适当的签名。你读过[文档](http://developer.apple.com/library/IOS/#documentation/General/Conceptual/Devpedia-CocoaApp/TargetAction.html)吗? – Caleb

+0

对不起,我很快写了我的回复。我明白,ViewController是我的目标。我的意思是如何以编程方式将ViewController设置为目标?例如,我将self设置为目标:** [forwardButton addTarget:self action:@selector(forwardButtonPressed)forControlEvents:UIControlEventTouchUpInside]; **我该如何使视图控制器变为? –

0
At ParentViewController.h 
-(void)ParentMethod; 

At ParentViewController.m 
-(IBAction)button:(id)sender { 
     [self ParentMethod]; 
} 

At IBAction of Play Button on child view controller do this: 
-(IBAction)ChildMethod:(id)sender { 
     ParentViewController *parent=self.parentViewController; 
     [parent ParentMethod]; 
} 
0

更好地在视图控制器中创建委托并在子视图中设置委托,所以当发生某些事情时根据它调用委托方法。

相关问题