Iphone 何时使用viewWithTag而不是通过IBOUTLE属性来访问IB对象?
对于您需要管理的每个IBOutlet,您需要有一个指针,因此也需要有一个属性。大多数情况下,属性都需要合成,然后在Dealloc和viewDidUnload中发布。实际上,有一小部分代码需要重复编写。您得到的是易于使用和代码清晰。现在,通过[self.view viewWithTag:]使用和访问IB中的对象可以节省一点代码空间,但会带来一点不确定性,因为您需要记住或检查IB中的对象标记。那么,为什么有人会费心使用viewWithTag呢 您可以在任何不从NIB加载接口的地方使用它。Iphone 何时使用viewWithTag而不是通过IBOUTLE属性来访问IB对象?,iphone,objective-c,properties,iboutlet,Iphone,Objective C,Properties,Iboutlet,对于您需要管理的每个IBOutlet,您需要有一个指针,因此也需要有一个属性。大多数情况下,属性都需要合成,然后在Dealloc和viewDidUnload中发布。实际上,有一小部分代码需要重复编写。您得到的是易于使用和代码清晰。现在,通过[self.view viewWithTag:]使用和访问IB中的对象可以节省一点代码空间,但会带来一点不确定性,因为您需要记住或检查IB中的对象标记。那么,为什么有人会费心使用viewWithTag呢 您可以在任何不从NIB加载接口的地方使用它。 我个人从不
我个人从不使用interfacebuilder,不存储指向您创建的所有子视图(可能有很多)的指针,而是标记它们并在以后使用它们的标记识别它们,这通常是很有帮助的。例如,我在UITableView的headerview中使用此技术,我必须根据用户输入进行更改。在我的例子中,我偶尔需要向视图中动态添加按钮,并且需要知道哪个按钮被按下,或者调用其他按钮 因此,我可以:
UIButton *desiredButton = [myView.viewWithTag:theTag]
我使用声明枚举中的按钮类型(或任何视图类型),以便以后可以安全地分配和调用:
typedef enum {
ButtonTypeDelete = 1,
ButtonTypeCancel = 2,
ButtonTypeAccept = 3,
....
..
} ButtonType
标记有很多用途,而且不必为每个视图元素都有一个出口
我在想我是否应该把这个答案做成一个维基,这样其他人就可以对此做出贡献。将等待其他人在此处给出答案。第2点正好显示了我处理按钮操作的首选方法之一。我在回答中忘了提到。