首页 文章

UILabel的可变IBOutlet名称?

提问于
浏览
0

呃,在这里遇到麻烦......

我在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 回答

  • 2

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

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

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

相关问题