iOS视图对象属性与操作方法

时间:2013-03-07 14:54:50

标签: ios objective-c xcode

只需要对视图对象进行一些澄清。如果我在这里提到的任何内容都不清楚,请告诉我。

只有几个问题:

创建属性对于诸如标签之类的对象有什么作用?

为什么我们不需要为我们创建的某些按钮创建属性?

为什么我们必须为某些视图对象创建属性?我问这个是因为我创建了一个开关,但我想用它的值发送到我的模型,但我必须创建一个属性才能使它工作。这与交换机的getter和setter有关吗?

2 个答案:

答案 0 :(得分:3)

  

创建属性对于诸如标签之类的对象有什么作用?

当您说“创建属性”时,我认为您的意思是在视图控制器中创建IBOutlet属性以引用相关标签。目的是允许您以编程方式与该标签进行交互(例如,更改其显示的文本等)。如果您不打算与该标签进行交互(例如它只是一个提示),则不需要IBOutlet。但是,如果您需要与之互动(例如,根据其他地方的其他用户输入更改其值),那么您可能会有IBOutlet

  

为什么我们不需要为我们创建的某些按钮创建属性?

您只需要为将要以编程方式与之交互的对象创建IBOutlet个引用(例如,更改按钮上的文本,检索开关的值),否则您不需要{ {1}}财产。在按钮的情况下,您可能有IBOutlet,或者如果使用segues,您甚至可能不需要它。您通常根本不需要IBAction属性引用(但如果您因任何原因需要它,可以有一个)。

但简而言之,您只需要为您将在自己的代码中与之交互的控件创建IBOutlet属性引用。


  

为什么我们必须为某些视图对象创建属性?我问这个是因为我创建了一个开关,但我想用它的值发送到我的模型,但我必须创建一个属性才能使它工作。这与交换机的getter和setter有关吗?

如果您想从某个随机方法访问IBOutlet的状态,那么,是的,getter方法将使您更容易这样做。通过定义属性,将为您合成getter方法。

另一方面,如果您UISwitch的“值已更改”事件与IBAction相关联,则可以从UISwitch参数访问该事件,而无需其他属性

sender

但是如果你想从其他方法访问- (IBAction)changedSwitchValue:(id)sender { UISwitch *switchControl = sender; if (switchControl.on) NSLog(@"Switch is on"); else NSLog(@"Switch is off"); } 的{​​{1}}属性,那么拥有on属性引用非常有用。

答案 1 :(得分:1)

  

创建属性对于诸如标签之类的对象有什么作用?

属性用于为实例变量生成getter和setter 您可以手动实现相同的访问者。如果你在谈论IBOutlet那么它就是在GUI对象和...之间进行交互的方式。代码(您访问对象的属性),IBOutlet成为用户界面上添加的对象与代码之间的连接

  

为什么我们不需要为我们创建的某些按钮创建属性?

有时当您在不使用.xib或GUI的情况下创建对象时,您不需要创建IBOutlet,而只能使用类中没有出口的属性来访问对象的属性,但在这种情况下,您必须手动将所有方法设置为对象的选择器,例如UIButton

You can find good references here to get to know how it works in practice