加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 17:30:03 所属栏目:百科 来源:网络整理
导读:当你构建了很多相同的对象时,一个好的设计伙伴会为标识符设置一个标记,所以: UITextField *object1,*object2;//Initialize it[object1 setDelegate:self];[object2 setDelegate:self];[object1 setTag: 1]; [object2 setTag: 2]; 为了更容易和“美丽”理解
当你构建了很多相同的对象时,一个好的设计伙伴会为标识符设置一个标记,所以:

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文件是序列化对象.当它们在运行时加载时,它们无法引用枚举的名称.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读