
在这里,我需要隐藏电话号码、电子邮件、出生日期、周年日期和其他标签,以防这些字段没有值。我怎样才能做到这一点?
很多方法,从最简单的开始:
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].
您可以做的只是隐藏UILabel's如果NSStrings您将它们放入的值是NULL/ nil。
NSString *labelString;
if([labelString length]>0)
{
}
else
Label.hidden = YES;
通过将标签放在表格的行中,使用 UITableView 来执行此操作可能是一个更好的主意。如果标签为空,您可以删除表格行,iOS 会为您动态调整表格高度。