应该从父 ViewController 还是子 ViewController 调用 popViewController?
Posted
技术标签:
【中文标题】应该从父 ViewController 还是子 ViewController 调用 popViewController?【英文标题】:Should popViewController be called from the parent or child ViewController? 【发布时间】:2012-04-05 01:29:25 【问题描述】:我可以从UINavigationController
的堆栈中弹出一个视图控制器,方法是从实例化它的父视图控制器或子视图控制器本身调用[self.navigationController popViewControllerAnimated:YES];
。哪种方式更可取?
【问题讨论】:
【参考方案1】:我想答案是“最有意义的”;正如您所说,您可以从父级、子级甚至其他包含导航控制器引用的类调用popViewControllerAnimated:
。
对于大多数应用程序,子视图将包含一个“返回”或“完成”按钮或其他一些导致它被弹出的操作。一般来说,我会说这是更可取的行为:子视图控制器会自行弹出。
否则,孩子将不得不(通过代表或其他方式)呼唤父母说“pop!”然后会调用popViewControllerAnimated:
。对于这样一个简单的动作来说,这感觉有点太复杂了。
【讨论】:
这取决于你提供什么样的“返回”按钮,左箭头来自父视图控制器。 在我的情况下,我 am 在父级上调用委托方法,因为父级是 tableview“表单”,而我的子级是用于浏览、搜索和选择的 tableview来自父表单上字段的可能值列表。所以我可以看到这两种方式都有意义,尽管我的直觉说要在孩子身上做,因为那是用户操作发生的地方(选择一个选项)应该关闭视图。 +1。我的直觉还说,如果动作在子视图中,那么对 pop 的调用也应该在那里。以上是关于应该从父 ViewController 还是子 ViewController 调用 popViewController?的主要内容,如果未能解决你的问题,请参考以下文章
将数据从父 ViewController 传递到子 VC,无需故事板 - Swift 5
如何从父进程获取子进程的状态,即它是停止、继续还是退出?对于 Linux,C 语言