objective-c – 将enum或#define标记设置为接口构建器中的对象

前端之家收集整理的这篇文章主要介绍了objective-c – 将enum或#define标记设置为接口构建器中的对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当你构建了很多相同的对象时,一个好的设计伙伴会为标识符设置一个标记,所以:

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中无法设置标签而不是数字?

解决方法

在IB中无法使用枚举.因为IB文件是序列化对象.当它们在运行时加载时,它们无法引用枚举的名称.

猜你在找的Xcode相关文章