2

我是 iOS 的初学者,在编程教程中以编程方式添加按钮时,目标始终设置为 self,并且在创建它的那个控制器中,IBAction编写了一个动作 ()。或者通过界面生成器,将目标设置为文件的所有者。

我的问题是,在什么情况下(一个例子会很好)那个目标不是自我。

我能想到的一种情况是,在类的(不是 a ViewController)方法中,根据条件创建按钮,因为该类不是 a ViewController,在初始化该类的对象时,ViewController将设置对当前的引用如果按钮出现,它将用作为按钮定义操作的目标。

4

1 回答 1

6

您可以将选择器指向任何目标 - 通常self是目标的原因是因为在代码中实例化 UIButton/UIBarButtonItem 是很正常的,因此很多教程都将选择器引用的实现包含在同一类中。

例如,您可以创建一个在 View Controller 中实例化时仅处理这些按钮调用操作的类:

#import <UIKit/UIKit.h>
#import "OtherObject.h"

@interface SomeViewController : UIViewController

@property (strong, nonatomic) OtherObject *other;

@end

@implementation SomeViewController

@synthesize other;

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIButton *someButton = [[UIButton alloc] initWithFrame:CGRectZero];
    [someButton addTarget:other action:@selector(someMethodInOther) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:someButton];

    UIButton *anotherButton = [[UIButton alloc] initWithFrame:CGRectZero];
    [anotherButton addTarget:other action:@selector(anotherMethodInOther) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:anotherButton];
}

@end

IBAction 让您告诉 Interface Builder 方法实现可以通过您的 xib/storyboard 连接。

于 2012-07-09T06:30:36.980 回答