UILabel的可变IBOutlet名称?

时间:2011-08-29 16:26:20

标签: iphone objective-c ios xcode4

呃,这里有些麻烦......

我在Interface Builder中有4个显示标签,在视图控制器中设置为IBOutlets。

我用这些名字设置了它们 label1,label2,label3,label4

我想更改随机选择标签的标签文字

我正在尝试这个......

在头文件中,我声明为属性:

@property (nonatomic retain) UILabel *myLabel;

然后在我的实现文件中我合成,我正在尝试

myLabel = [UILabel valueForKey: [NSString stringWithFormat:@"label%d", randomInt]];

myLabel.text = @"bleh!";

myLabel = [UILabel ...行导致崩溃。有帮助吗?谢谢!

1 个答案:

答案 0 :(得分:2)

您有正确的想法,但是您应该将valueForKey:传递给self,而不是UILabel,假设其self拥有这些属性。

myLabel = [self valueForKey:[NSString stringWithFormat:@"label%d", randomInt]];

作为旁注,使用IBOutletCollection可能会更好。在Xcode 4中,选择所有标签并将它们拖到头文件中。这将生成包含所有出口的IBOutletCollection NSArray。然后,您可以从该数组中选择一个随机索引。通常不幸的是IBOutletCollection以不确定的顺序存储其出口,但对于您的情况,它应该没问题。