从 UITableView 导航到另一个 ViewController 然后返回到 TableViewController 会导致一些元素消失

Posted

技术标签:

【中文标题】从 UITableView 导航到另一个 ViewController 然后返回到 TableViewController 会导致一些元素消失【英文标题】:Navigating from UITableView to another ViewController and then going back to the TableViewController causes some elements to disappear 【发布时间】:2017-08-29 09:32:31 【问题描述】:

我的笔记应用出现了一个奇怪的问题。 我有一个ViewController,它是一个UITableView 委托和数据源(我不使用UITableViewController) 表格视图是笔记列表。单击一个将打开所选笔记的编辑器视图控制器。

当我单击一个单元格,然后单击“返回”按钮返回表格视图时,表格视图 UI 的某些元素似乎丢失了。

这是表格视图的前后截图:

我正在使用 Realm 移动数据库来存储笔记的数据。

当我调试时,我看到数据实际上填充在单元格中,它只是没有出现在屏幕上。

我尝试删除该应用并重新安装它

我尝试删除故事板并从头开始重建所有内容

我检查了cellForRowAt indexPath 并确保正在填充数据。

更新 - cellForRowAt indexPath: 的代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: NoteListCell.identifier, for: indexPath) as! NoteListCell

    let object = results[indexPath.row]
    cell.configureCellWith(note: object)
    return cell

我什至尝试为消失的标签添加背景颜色,以查看它们是否仍然存在,或者只是缺少文本(不是文本,整个标签都消失了)。

我的代码中没有任何特殊的东西来处理 tableview 数据或在视图控制器之间导航。我的 viewWillAppearviewWillDisappear 两个 VC 方法都没有导致这种情况(我厌倦了从这些方法中删除所有内容,但问题仍然存在)

有人知道我还能检查什么吗?

【问题讨论】:

显示您的cellForRowAt indexPath 代码 检查你的 didselectrow 方法。可能是您在选择时更改颜色,或者您提供的选择样式正在更改选择单元格时的颜色。 @Venkat 我用代码更新了我的问题,但我怀疑它与 tableview 方法有关,因为问题发生在导航回 tableview 视图控制器之后,这些方法甚至没有调用。 @KrishnaDattShukla 我检查了,我没有任何类似的东西,我在didSelectRowAt 方法中所做的只是将 segue 转到下一个视图控制器 @Gil 显示您的configureCellWith note: 代码 【参考方案1】:

所以我仍然不知道为什么会这样,但我安装了 Xcode 9 beta 并从那里运行项目(我之前使用的是 8.3.3)并且问题消失了。 重新安装 8.3.3 也可能解决此问题。

【讨论】:

以上是关于从 UITableView 导航到另一个 ViewController 然后返回到 TableViewController 会导致一些元素消失的主要内容,如果未能解决你的问题,请参考以下文章

如何将单击行导航到另一个 UITableView?

导航到另一个 ViewController 时 UITableView 行有问题

分层 UITableview

将核心数据对象从 DetailViewController 传递到另一个 View Controller

导航到另一个 pageView 或任何 View 时,Bloc 小部件 reftech 数据(重建)

iphone导航控制器和表格视图