在IBAction中隐藏动态创建的UILabel

时间:2014-02-23 09:20:23

标签: ios objective-c

我首先在ViewController中声明了UILabel,如下所示:

@property (weak, nonatomic) IBOutlet UILabel *answerLabel;

然后我在循环中创建了标签:

//creating answer labels
    i = 0;
    int y=200;
    while (i < numberOfAnswers) {
        UILabel *answerLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, y, 300, 20)];
        answerLabel.text = [NSString stringWithFormat:@"%@ (%@)", questionBank[randomQuestionNumber][1][i][0],questionBank[randomQuestionNumber][1][i][1]];
        answerLabel.hidden=NO;
        [self.view addSubview:answerLabel];
    i++;
    y = y + 20;
    }

在IBAction中我有这个,但它不起作用。任何错误的想法?

- (IBAction)nextQuestion:(id)sender {
    //hiding labels
    self.answerLabel.hidden=YES;
}

2 个答案:

答案 0 :(得分:1)

我建议先创建视图,然后在此视图中添加这些标签。

现在当你需要隐藏时,只需隐藏这个视图。

希望这个答案。


对于你正在做的事情,这是漫长的道路。第一个白色创建标签,你必须设置标签。然后为了隐藏,再次按标签获取标签,然后相应地隐藏。

答案 1 :(得分:1)

您的代码包含很多问题。

首先,当你谈论多个网点时,在声明中它应该像outletCollection这样:

@property (strong, nonatomic) IBOutletCollection(UILabel) NSArray *answerLabels;

同样,当您动态创建标签时,您无法在IBOuletCollection中添加标签。

@FahimParkar建议一个好方法。但是,由于您可能需要使用单个标签,您可以使用以下方法..

首先声明一个这样的标签数组:

@property (strong, nonatomic) NSMutableArray *answerLabels;

现在,当您创建标签时,请分配您的阵列&amp;在其中添加新标签:

i = 0;
    int y=200;
self.answerLabels= [[NSMutableArray alloc]init]
    while (i < numberOfAnswers) {
        UILabel *answerLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, y, 300, 20)];
        answerLabel.text = [NSString stringWithFormat:@"%@ (%@)", questionBank[randomQuestionNumber][1][i][0],questionBank[randomQuestionNumber][1][i][1]];
        answerLabel.hidden=NO;
        [self.view addSubview:answerLabel];
[self.answerLabels addObject:answerLabel]
    i++;
    y = y + 20;
    }

现在,当您想要隐藏特定标签时,可以通过引用这三个中的任何一个来完成此操作:

  1. 数组索引。
  2. LabelText的。
  3. 根据Fahim&amp; amp; amp; amp; amp; amp;请参考.. :))
  4. 如果需要更多信息,请告诉我.. :)