如何解决从子视图中的UIButton调用UIViewController中的方法
|| 仍在学习目标C并正确构建结构。 我有一个带有UIViewController的iOS应用,该UIViewController具有一个名为\“ doSomething \”的已定义方法。在我的视图控制器中,我有一个视图,在该视图中,我以编程方式创建了许多UIButton(请参见下面的示例,其中有一个按钮)。 现在,当我按下按钮时,我想调用我的方法“ doSomething \”。我目前的操作方式是这样的:[myButton addTarget:nil
action:@selector(doSomething:)
forControlEvents:UIControlEventTouchUpInside];
因为我的目标是nil,所以它会沿着响应者链上升,直到找到名为“ doSomething \”的方法。它可以工作,但是感觉并不正确。
我已经开始考虑使用@protocol,但并没有真正意识到这一点。我一直在看一些教程,但对我来说还不够清楚。我已经使用了诸如表视图控制器这样的协议,但是定义一个协议对我来说是新的。
是否有可能为此特定案例提供示例?
谢谢!
解决方法
当目标传递给视图控制器时,该方法将在该对象上调用。
编辑:
[myButton addTarget:controller
action:@selector(doSomething:)
forControlEvents:UIControlEventTouchUpInside];
假设您有一个名为controller的变量,即UIViewController。如果您没有对控制器的引用,则只需将其传递给视图即可。
编辑2:
查看界面:
@property (assign) UIViewController* controller;
查看实施:
@synthesize controller;
控制器:
- (void) viewDidLoad {
[super viewDidLoad];
someView.controller = self;
}
,我这样做的方式是将addTarget
的值设置为self
。
[myButton addTarget:self
action:@selector(doSomething:)
forControlEvents:UIControlEventTouchUpInside]
这将在添加目标的对象上寻找方法“ 8”。在这种情况下,它将是视图控制器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。