IBOutlet and IBAction

167

在Xcode和Interface Builder中使用IBOutlets和IBActions的目的是什么?

如果我不使用IBOutlets和IBActions会有什么区别吗?


Swift:

@IBOutlet weak var textField: UITextField!

@IBAction func buttonPressed(_ sender: Any) { /* ... */ }

Objective-C:

@property (nonatomic, weak) IBOutlet UITextField *textField;

- (IBAction)buttonPressed:(id)sender { /* ... */ }

14
所有答案都提到了相同的想法,但没有人解释为什么如果你在源代码中不包含IBAction/IBOutlet,Interface Builder似乎仍然能够正常工作。除了使用IBAction和IBOutlet之外,是否还有其他原因?或者将它们省略掉也可以吗? - bobobobo
2
迈克尔·罗杰斯在下面的回答中解释了为什么即使省略了IBAction,代码仍然能够正常工作。 - Krishna
IBAction存在于目标-动作交互机制的一部分,您可以在此处了解IBAction如何适合其中:https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaEncyclopedia/Target-Action/Target-Action.html#//apple_ref/doc/uid/TP40010810-CH12您可以在此处了解插座:https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaEncyclopedia/Outlets/Outlets.html#//apple_ref/doc/uid/TP40010810-CH10-SW1 - William Power
11个回答

0

我不知道你不再需要它们了,它们曾经是让界面构建器可以在你的源代码中找到它们的必要条件,在 Swift 中,我想 IBAction 仍然是必需的,因为它需要改变从界面构建器调用你的方法的方式,虽然我认为 @objc 也会做同样的事情。我个人打算继续使用它们,因为它可以记录方法或接口应该做什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接