仍然了解Objective C并使结构正确。
我有一个带有UIViewController的iOS应用程序,它有一个名为“doSomething”的已定义方法。在我的视图控制器中,我有一个视图,在该视图中有一些我以编程方式创建的UIButton(请参阅下面的示例,只有一个按钮)。
现在,当我按下按钮时,我想调用我的方法“doSomething”。我目前这样做的方式是这样的:
[myButton addTarget:nil
action:@selector(doSomething:)
forControlEvents:UIControlEventTouchUpInside];
由于我的目标是nil,它会响应响应者链,直到找到一个名为“doSomething”的方法。它有效,但它感觉不对。
我已经开始考虑使用@protocol,但并没有真正了解它。我一直在看一些教程,但对我来说还不够清楚。我已经使用了类似于表视图控制器的协议,但是定义一个对我来说是新的。
是否有可能为这个特定情况得到一个例子?
谢谢!
答案 0 :(得分:4)
当您的目标在视图控制器中传递时,将在该对象上调用该方法。
编辑:
[myButton addTarget:controller
action:@selector(doSomething:)
forControlEvents:UIControlEventTouchUpInside];
假设您有一个名为controller的变量,它是您的UIViewController。如果您没有对控制器的引用,那么只需将其传递给您的视图即可。
EDIT2:
查看界面:
@property (assign) UIViewController* controller;
查看实施:
@synthesize controller;
控制器:
- (void) viewDidLoad {
[super viewDidLoad];
someView.controller = self;
}
答案 1 :(得分:0)
我这样做的方法是将addTarget
的值设置为self
。
[myButton addTarget:self
action:@selector(doSomething:)
forControlEvents:UIControlEventTouchUpInside]
这将在添加目标的对象上查找方法doSomething
。在这种情况下,这将是视图控制器。