我首先在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;
}
答案 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;
}
现在,当您想要隐藏特定标签时,可以通过引用这三个中的任何一个来完成此操作:
如果需要更多信息,请告诉我.. :)