从堆栈中弹出后重新出现 UITableViewCellSeperator 的问题

Posted

技术标签:

【中文标题】从堆栈中弹出后重新出现 UITableViewCellSeperator 的问题【英文标题】:Issues with UITableViewCellSeperator reappearing after popping from the stack 【发布时间】:2014-01-22 03:37:25 【问题描述】:

我有一个将动态数据加载到表视图中的应用程序。当只有一项时(因此只有一个单元格)。为了确保 UITableViewCellSeperator 没有出现在这一项中,我使用了以下代码:

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 

    // This will create a "invisible" footer
    return 0.01f;


这按预期工作,这是我的单元格的样子:

如您所见,这按预期工作,并且没有单元格分隔符。

当我选择单元格并显示我的详细视图然后点击后退按钮时,单元格出于某种原因添加了一个分隔符。这是我在堆栈中导航后单元格的样子:

您会注意到分隔符现在比标准分隔符更宽。如果我的 tableview 中有多个单元格,则 tableview 中的最后一个单元格的行为方式相同。

当我删除上述方法时,问题得到解决,但现在我的表格视图有大量用于空单元格的额外分隔符。有更好的解决方案吗?

这是我的 cellForRowAtIndexPath 方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIdentifier = @"searchCell";
    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (!cell)
    
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    

    // Configure the cell...

    cell.backgroundColor = [UIColor PFBlack];

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    cell.textLabel.font = [MuseoSans font500WithSize:16.0f];
    cell.textLabel.textColor = [UIColor whiteColor];
    cell.textLabel.text = @"Current Location";


    return cell;


知道是什么导致了这个问题吗?还是我做错了什么?谢谢!

【问题讨论】:

你找到解决这个问题的方法了吗? 【参考方案1】:

这应该会删除你多余的单元格分隔符:

tableVie.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

source

【讨论】:

这确实删除了分隔符,但是当我将某些东西推到堆栈上然后将其弹出时,底部单元格中更大/更宽的分隔符仍然会重新出现。【参考方案2】:

你可以通过以下两种方式做到这一点

首先是

[self.tbl setSeparatorStyle:UITableViewCellSeparatorStyleNone];

其次是

将您的 tableview 属性从“默认”更改为“无”

【讨论】:

这将完全删除分隔符。我仍然希望它们出现在 tableview 中,我只是不希望出现多余的分隔符。如果我有两个项目,分隔符将显示为好像有 5 个单元格。

以上是关于从堆栈中弹出后重新出现 UITableViewCellSeperator 的问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥从导航堆栈中弹出视图时键盘不显示?

有没有办法找出视图控制器是不是从导航堆栈中弹出?

从堆栈列表(链表)中弹出一个数字?

从堆栈中弹出特定片段并删除其他片段

从导航堆栈中弹出视图控制器时从右侧滑入

如何从堆栈中弹出视图控制器而不导航到它们