当你构建了很多相同的对象时,一个好的设计伙伴会为标识符设置一个标记,所以:
UITextField *object1,*object2; //Initialize it [object1 setDelegate:self]; [object2 setDelegate:self]; [object1 setTag: 1]; [object2 setTag: 2];
为了更容易和“美丽”理解代码,您可以创建一个枚举.
typedef enum { MyTextField1 = 1,MyTextField2 } allTextField;
所以,你不会只放一个数字,可以用这种方式设置标签:
[object1 setTag: MyTextField1]; [object2 setTag: MyTextField2];
在任何委托功能中,您可以更轻松地对待它
- (BOOL)textFieldShouldClear:(UITextField *)textField { switch(textField.tag) { case MyTextField1: return YES; case MyTextField2: return NO; } }
但是,当您在XCode中构建Interface Builder时,可以在此字段中设置标记:
但如果我设置它,我会收到:
在Interface Builder中无法设置标签而不是数字?