这里我需要隐藏电话号码,电子邮件,birthDate,周年纪念日和其他标签,以防这些字段没有值。我怎么能这样做?
答案 0 :(得分:5)
从最简单的方法开始:
self.emailLabel.hidden = YES;
但您可能希望重新格式化视图的其他部分以适应空白区域。保持简单,你会做这样的事情:
self.phoneLabel.frame = CGRectOffset(self.phoneLabel.frame, 0, -self.emailLabel.bounds.size.height);
......等等以下任何事情。但你可以看到这将变得乏味。下一个也许是最好的选择是UITableView,它根据是否存在某些数据来调整它的节数。那会是这样的。使用模型的各个部分及其值来准备一个可变数组。
- (void)prepareModel {
self.model = [NSMutableArray array];
[self.model addObject:@[@"Name", @"Judy"]; // get "Judy" from your data
if (/* model has email */) {
[self.model addObject:@[@"Email", @"judy@gmail.com"]; // get email from your model
}
// and so on for conditional parts of your model
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return self.model.count;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
return self.model[section][0];
}
并且cellForRow将使用self.model[section][1]
初始化单元格。
答案 1 :(得分:1)
如果你所加入的UILabel's
的值为NSStrings
/ NULL
,则可以隐藏nil
。
NSString *labelString;
if([labelString length]>0)
{
}
else
Label.hidden = YES;
答案 2 :(得分:1)
使用UITableView执行此操作可能更好,方法是将标签放在表的行中。如果标签为空,则可以删除表格行,iOS将动态调整表格高度。