0

我有 section:1 有 11 行。我这样设置高度

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0) return 350;
    else if (indexPath.section == 1) {
        return 150;
    }
    else return 0;
}

如果我设置 cell.hidden = YES; 我如何删除单元格,因为如果 cell.hidden = YES 它将显示空间,但如果单元格被隐藏,我不想要我想要的空间直接从 secrion 中删除:1

或者如果我可以将每个隐藏单元格的高度设置为 0.0

谢谢

编辑

tableView 没有 NSArray 它是这样定制的

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {


    if (section == 0) { return 1; }
    else if (section == 1) {

        int retype = [type intValue];

        if (retype == 1 || retype == 5 || retype == 10) {
            return 0;
        }

        else if (retype == 11) { return 9; }
        else if (retype == 14) { return 4; }

        else {

            return 11;
        }

    }
    else return 0;

}

和像这样配置的单元格

static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if (!cell) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
            cell.selectionStyle = UITableViewCellSelectionStyleGray;
        }

int truef = [*nsstring* intValue];
if (indexPath.section == 1) {
if (indexPath.row == 0) {
if (truef == 0) {
cell.hidden = YES;
}
else {
cell.titleLabel.text = @"True";
}
}
}

编辑 2

这是使用 deleteRowsAtIndexPaths 后的错误

reason: 'Invalid update: invalid number of rows in section 1.  The number of rows contained in an existing section after the update (11) must be equal to the number of rows contained in that section before the update (11), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out)
4

2 回答 2

1

您不需要隐藏单元格。此处的适当方法是从您的数据源中删除此单元格,并通过以下方式将其从表视图中删除

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];

编辑

嗯......你会同意我的观点,你使用的“神奇数字”不是好方法。我在这里看到以下解决方案:您输入所有返回的数字

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

到实例变量中,比如

@property (assign, nonatomic) numberOfRowsInSection0;

比你可以减少这个变量并删除最后一行。在您的情况下,您将只能从表格视图中删除最后一行。

结论:上面的解决方案只是一个 hack,它允许您只删除表中的最后一行。您必须再次检查代码并更改逻辑才能使用数组或任何其他存储。表格视图假设您有一些数据源,但您没有,这是您问题的核心。

于 2013-09-10T16:22:40.393 回答
0
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
if(cell.hidden) { return 0.0f; }
于 2013-09-10T16:06:15.677 回答