以我的ViewController我已经创建了包含一个按钮和一群其他元件的图。当按下按钮时,我想从父ViewController调用一个方法。我试过了:调用视图控制器的方法从子视图
[self.superview buttonPressedMethod];
但是,superview不是ViewController而是UIView。无论如何要做到这一点?
以我的ViewController我已经创建了包含一个按钮和一群其他元件的图。当按下按钮时,我想从父ViewController调用一个方法。我试过了:调用视图控制器的方法从子视图
[self.superview buttonPressedMethod];
但是,superview不是ViewController而是UIView。无论如何要做到这一点?
这也正是目标/动作机制是什么。使视图控制器中的方法成为IBAction。将视图控制器设置为按钮的目标,并将该方法设置为其操作。这应该是你需要做的一切。
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];
}
更好地在视图控制器中创建委托并在子视图中设置委托,所以当发生某些事情时根据它调用委托方法。
该按钮是以编程方式创建的。 ViewController的目标是什么? –
视图控制器没有目标,它*是目标。你可以使用'-addTarget:action:forControlEvents:'设置按钮的目标和动作。将视图控制器指定为目标,并将您要调用的方法指定为操作。请注意,该方法必须具有适当的签名。你读过[文档](http://developer.apple.com/library/IOS/#documentation/General/Conceptual/Devpedia-CocoaApp/TargetAction.html)吗? – Caleb
对不起,我很快写了我的回复。我明白,ViewController是我的目标。我的意思是如何以编程方式将ViewController设置为目标?例如,我将self设置为目标:** [forwardButton addTarget:self action:@selector(forwardButtonPressed)forControlEvents:UIControlEventTouchUpInside]; **我该如何使视图控制器变为? –