对于你需要管理的每个IBOutlet你需要有一个指针,所以也需要有一个属性。大多数时候属性需要被合成,然后在dealloc和viewDidUnload中释放。实际上,有一些代码需要你反复写。这样做的结果是代码易于使用和清晰。现在,使用和访问IB中的对象。view viewWithTag:]节省了一点代码空间,但给出了一点不清晰,因为您需要记住或检查对象标签的IB。那么,为什么有人会使用viewWithTag呢?
在我的例子中,我偶尔需要动态地向视图添加按钮,并且需要知道哪个按钮已被按下,或者召回其他按钮。
这样我就可以:
UIButton *desiredButton = [myView.viewWithTag:theTag]
我用来在enum中声明按钮类型(或任何视图类型),以便我可以安全地分配和稍后调用:
typedef enum {
ButtonTypeDelete = 1,
ButtonTypeCancel = 2,
ButtonTypeAccept = 3,
....
..
} ButtonType
标签有很多很多的用途,也没有必要为每个视图元素都有一个出口。
- UITextfields要填写在一个很长的表单中,这里的标签可以用来自动移动光标到下一个字段
- 同一个IBAction可以连接到多个按钮,并且可以基于标签执行操作。
我在想是否应该把这个答案做成wiki,这样其他人就可以贡献了。我会等其他人把他们的答案放在这里。
您可以在不从NIBS加载接口的任何地方使用它。我个人从来没有使用过interfacebuilder,它通常是有帮助的,不存储指针到所有的子视图创建(这可能是很多),但标记他们,并在以后使用他们的标签来识别他们。我在UITableView的headerview中使用这种技术,我必须根据用户输入进行更改。