【发布时间】:2020-07-19 21:01:21
【问题描述】:
我有一个 tableview 控制器,一个详细的 VC。和一个允许删除项目的编辑详细信息 VC。 Tableview 由一组项目提供。
删除项目后,我不仅要关闭编辑 VC,还要关闭它下面的 detailVC(因为项目不再存在),只留下更新的 tableview。
我可以通过通知成功更新表格视图,并且可以关闭编辑视图控制器。但是,我想不出在编辑VC消失后删除详细VC的方法。
到目前为止,在editVC中从服务器确认删除后,我有:
[self dismissViewControllerAnimated: NO completion:nil];
[self.presentingViewController dismissViewControllerAnimated: YES completion: nil];
这会关闭editVC,但不会关闭detail VC。
我还在删除时发送通知,tableview VC 和详细信息 VC 都观察到,并且两者的处理程序具有相似的解除代码。我都试过了:
[self dismissViewControllerAnimated: NO completion:nil];
[self.presentingViewController dismissViewControllerAnimated: YES completion: nil];
但是细节视图仍然没有被关闭。
值得注意的是,detail 是 Show(例如)推送,而 Edit 是嵌入在其自己的导航中的模态视图控制器。
故事板中的 VC。第一个导航是主故事板中 TabViewController 的一部分
编辑:
如果有任何不同,则从 AlertViewController 调用第三个(编辑)VC 中的删除方法。
根据 Apple 的文档,仅调用 dismissViewController 应该会关闭导航堆栈中的所有后续 VC,但这似乎并没有发生:
讨论
呈现视图控制器负责关闭视图 它呈现的控制器。如果您在呈现的视图上调用此方法 控制器本身,UIKit 要求呈现视图控制器处理 解雇。如果你连续呈现几个视图控制器, 因此构建了一堆呈现的视图控制器,调用它 堆栈中较低的视图控制器上的方法解除其立即 子视图控制器和该子视图之上的所有视图控制器 堆。发生这种情况时,只有最顶层的视图会在 动画时尚;任何中间视图控制器都被简单地删除 从堆栈中。最顶层的视图使用它的模态被关闭 过渡样式,可能与其他视图使用的样式不同 堆栈中较低的控制器。如果您想保留对 视图控制器呈现的视图控制器,获取值 调用此方法之前的presentedViewController 属性。这 在 viewDidDisappear: 方法之后调用完成处理程序 在呈现的视图控制器上调用。
【问题讨论】:
-
您可以发布您的故事板。目前尚不清楚您是如何安排视图控制器层次结构的。
-
请看上面的故事板
标签: ios objective-c presentviewcontroller dismissviewcontroller