4

我正在构建一个自定义键盘,其中大约有 50 个UIButton键。我想为每个键放置一些分组信息,例如数字、字母、光标等。

首先想到的是tag字段(字母100,数字200,......等等)

另一种选择是通过具有关联引用的类别

但是,这两种方法对 Interface Builder 都不是很友好。还有其他选择吗?

4

3 回答 3

6

你写了

我想为每个键放置一些分组信息,例如数字、字母、光标等。

为什么不使用IBOutletCollections?

您可以为每个“数字、字母、光标”声明数组:

@property (nonatomic) IBOutletCollection(UIButton) NSArray *numberButtons;
@property (nonatomic) IBOutletCollection(UIButton) NSArray *letterButtons;
@property (nonatomic) IBOutletCollection(UIButton) NSArray *cursorButtons;

并轻松地将它们连接到界面生成器中:

在此处输入图像描述

于 2013-01-21T02:41:39.107 回答
3

可能最干净的方法是使用它处理同一子类/类别中的所有内容User Defined Runtime Attributes

在此处输入图像描述

对于上面的示例,您应该至少有一种方法:

-(void) setLocalizedKey:(NSString *) key;
//(NSString *) localizedKey; this is optional

或财产:

@property(nonatomic, strong) NSString * localizedKey;

如果您喜欢关联引用(或者您不需要存储或无权访问类本身)@synthesize,请在您的子类或类别中声明和实现(或)。UIButton

在上面的示例中, 的值keyHOW_IT_WORKS针对该特定实例。这是我通常处理本地化的方式,但也应该服务于您的目的。

于 2013-01-21T02:32:19.183 回答
0

也许我误解了您的问题,但该tag属性绝对可以UIButtons通过 XCode/Interface Builder 设置。

在此处输入图像描述

于 2013-01-21T02:01:04.383 回答