ios - (iOS)viewcontroller弹出时如何删除行?
问题描述
我有一个UITableView
. 当我单击一行时,它将推送一个详细视图控制器以显示详细信息。而且,如果用户单击详细视图控制器上的“完成”按钮,我需要弹出此控制器并删除 tableview 控制器上的行。
我尝试在详细视图上编写代码viewWillDisappear
:
if let vc = navigationController?.viewControllers[0] as? TodoViewController{
vc.removeTodo(at:todoListIndex)
}
代码工作正常,但只是一个警告:
UITableView
被告知在不位于视图层次结构中的情况下布局其可见单元格和其他内容(表视图或其父视图之一尚未添加到窗口中)。这可能会在没有准确信息的情况下强制表视图内的视图加载和执行布局(例如表视图边界、特征集合、布局边距、安全区域插入等),从而导致错误,并且还会由于额外的布局传递而导致不必要的性能开销.
那么,删除行的正确方法是什么?
解决方案
正如错误消息所暗示的那样,它会提醒您在视图不可见时避免更新视图。这通常发生在您更新某个viewWill____
状态的视图时(在本例中viewWillDisappear
)。
因此,您要做的是在viewDid___
(例如viewDidAppear
)生命周期中从 TableView 中删除单元格。然后,您将不再看到警告消息。
如果需要,您可以使用帮助flag members
来observables
指导正确的删除时间。
推荐阅读
- mongodb - 构建多个索引,其中一个在 Mongo 中是唯一的
- python - 是否有 python 函数来颜色/样式多索引级别?
- reactjs - 带有可变路径的图像需要不起作用
- delphi - Delphi 网络打印机访问路径
- swift - 如何将 ViewModel 绑定到 Collationview?
- oracle - plsql这个代码错误有什么问题'INTO列表类型错误'
- ios - PencilKit 的 Xcode 项目的 .drawing 扩展文件?
- entity-framework - 尝试激活“Controllers.HomeController”时无法解析“IRepositoryPMS.IProductRepository”类型的服务
- python - 如何检测使用 webapp2 单击了哪个图像按钮(输入类型 = 图像)?
- django - 在 Django 中,方法中的请求参数有什么作用?