当前位置:  开发笔记 > IOS > 正文

隐藏UITableViewCell

如何解决《隐藏UITableViewCell》经验,为你挑选了2个好方法。

有没有办法隐藏UITableView单元格?我正在寻找一些我可以在同步cellForRowAtIndexPath()返回的UITableViewCell上调用的属性或方法来隐藏它并使用户无法选择它.



1> HotJard..:

对我来说使用映射并不容易,所以我决定使用SAS方法.但它不适用于我的自定义单元格.所以,我纠正了它:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row == 7 && hide7Row){
        UITableViewCell* cell = [cells objectAtIndex:indexPath.row];
        cell.hidden = YES;
        return 0.0;
    }
    else if(indexPath.row == 8 && hide8Row){
        UITableViewCell* cell = [cells objectAtIndex:indexPath.row];
        cell.hidden = YES;
        return 0.0;
    }
    else {
        return 44.0;
    }
}

工作良好.


那么cell是一个包含UITableViewCell的数组,用于tableview的每一行?那很糟.UITable模式用于将单元格离开屏幕时放入重用队列中.所以你很有可能最终隐藏错误的细胞.我无法看到你的代码是如何工作的,除非特殊情况下表格太短以至于没有单元格从屏幕上滚动.或者您尝试隐藏屏幕上的单元格的其他特殊情况.不建议.

2> Noah Withers..:

你的意思是在表格中留下一个空格,或者只是从它之前的一个空格到它之后的一个空格?在前一种情况下,我猜你可能会尝试获取单元格contentView并将其hidden属性设置为YES; 否则,你就得做一点逻辑在你-tableView:numberOfRowsInSection:-tableView:cellForRowAtIndexPath:方法,返回(否则你回细胞的数量- 1)从第一,并根据是否行指数比小于或大于你不包括的行(你要返回的单元格)或(单元格(行索引+ 1)).

(编辑,因为解释很复杂:)

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
    if(section == theSectionWithoutARow)
    {
        if(shouldRemoveTheRow)
            return [theArrayWithTheSectionContents count] - 1;
        else
            return [theArrayWithTheSectionContents count];
    }
    // other sections, whatever
}

- (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // blah blah standard table cell creation

    id theCellObject;

    if(indexPath.section == theSectionWithoutARow)
    {
        NSInteger theActualRowToDisplay = indexPath.row;
        if(shouldRemoveTheRow && indexPath.row >= theRowIndexToRemove)
        {
            theActualRowToDisplay = indexPath.row + 1;
        }
        theCellObject = [theArrayWithTheSectionContents objectAtIndex:theActualRowToDisplay];
    }

    // now set up the cell with theCellObject

    return cell;
}

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有