【发布时间】:2010-03-30 10:00:34
【问题描述】:
是否可以在代码中硬编码IBActions 和IBOutlets,而不是在 Interface Builder 中拖动连接它们?
【问题讨论】:
标签: objective-c cocoa-touch ibaction iboutlet
是否可以在代码中硬编码IBActions 和IBOutlets,而不是在 Interface Builder 中拖动连接它们?
【问题讨论】:
标签: objective-c cocoa-touch ibaction iboutlet
是的,它是可能的......
示例代码
UIButton *btnDetail = [UIButton buttonWithType:UIButtonTypeRoundedRect] ;
[btnDetail setFrame:CGRectMake(250.0f, 15.0f, 65.0f, 20.0f)] ;
//btnDetail.backgroundColor = [UIColor grayColor];
[btnDetail setTitle:@"Detail" forState:UIControlStateNormal];
[btnDetail setTitleColor: [UIColor redColor] forState: UIControlStateNormal];
[btnDetail.titleLabel setFont:[UIFont fontWithName:@"Verdana" size:12]];
[btnDetail setBackgroundColor:[UIColor clearColor]];
[btnDetail sizeThatFits:btnDetail.frame.size];
[self.view addSubview:btnDetail];
//IBAction
[btnDetail addTarget:self
action:@selector(ShowSavingAccountDetail:)
forControlEvents:UIControlEventTouchUpInside];
[btnDetail setImage:[UIImage imageNamed:@"btn-detail.png"] forState:UIControlStateNormal];
【讨论】:
IBAction 和 IBOutlet 的概念和唯一目的是为 Interface Builder 提供将 xib 与您的代码连接起来的方法。
如果您不想在代码中使用 Interface Builder,则不需要 IBAction 或 IBOutlet,您只需要它们来使用在您的 xib 中从您的类中实例化的对象(按钮、文本字段等) .
话虽如此,mihirpmehta 的答案是以编程方式将 UI 元素添加到视图并向它们添加操作的正确方法。
【讨论】: