【问题标题】:(iOS)How to delete row when viewcontroller poped?(iOS)viewcontroller弹出时如何删除行?
【发布时间】:2021-06-22 13:51:50
【问题描述】:

我有一个UITableView。当我单击一行时,它将推送一个详细视图控制器以显示详细信息。 而且,如果用户单击详细视图控制器上的“完成”按钮,我需要弹出此控制器并删除 tableview 控制器上的行。

我尝试在详细视图的viewWillDisappear 上编写代码:

if let vc = navigationController?.viewControllers[0] as? TodoViewController{
  vc.removeTodo(at:todoListIndex)
}

代码工作正常,但只是一个警告:

UITableView 被告知布局其可见单元格和其他内容,而不是在视图层次结构中(表视图或其父视图之一尚未添加到窗口中)。这可能会在没有准确信息的情况下强制表视图内的视图加载和执行布局(例如,表视图边界、特征集合、布局边距、安全区域插入等),从而导致错误,并且还会由于额外的布局传递而导致不必要的性能开销.

那么,删除行的正确方法是什么?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    正如错误消息所暗示的那样,它会提醒您在视图不可见时避免更新视图。这通常发生在您更新处于viewWill____ 状态的视图时(在本例中为viewWillDisappear)。

    所以你要做的是在viewDid___(如viewDidAppear)生命周期中从TableView中删除单元格。然后,您将不再看到警告消息。

    如果需要,您可以使用flag membersobservables 的帮助来指导正确的删除时间。

    【讨论】:

      猜你喜欢
      • 2015-11-12
      • 2013-08-25
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      • 2013-08-28
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多