2

在此处输入图像描述

在这里,我需要隐藏电话号码、电子邮件、出生日期、周年日期和其他标签,以防这些字段没有值。我怎样才能做到这一点?

4

3 回答 3

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].

于 2013-06-15T06:20:04.843 回答
1

您可以做的只是隐藏UILabel's如果NSStrings您将它们放入的值是NULL/ nil

NSString *labelString;
if([labelString length]>0)
{

}
else
Label.hidden = YES;
于 2013-06-15T06:14:47.890 回答
1

通过将标签放在表格的行中,使用 UITableView 来执行此操作可能是一个更好的主意。如果标签为空,您可以删除表格行,iOS 会为您动态调整表格高度。

于 2013-06-15T06:32:00.273 回答