最佳实践:从iOS

时间:2017-03-23 22:36:04

标签: ios

我有一个导航控制器,堆栈上有4个视图控制器。我需要从ViewController4访问ViewController1中的函数。这样做的正确方法是什么?

  1. 我是否将引用传递给ViewController1到ViewController2& 3然后使用协议委托访问该功能?

  2. 我是否在结构中存储对ViewController1的引用,然后从那里访问它?

  3. 2号是我目前正在做的事情。我离开ViewController1时设置了引用,然后在我完成它时将该引用设置为nil。

    为什么我需要这样做:

    VC1有一个包含大量项目的tableview。这些项目中的数据在VC4中编辑。在VC4中完成编辑后,我想保存,弹出到root,然后用新数据重新加载tableview。

2 个答案:

答案 0 :(得分:1)

我认为你可以使用通知。使VC1订阅通知。需要时,在VC4中发送通知。

答案 1 :(得分:1)

你的计划完全错了。您应该做的是拥有一个可以发布有关其数据更改的通知的数据模型。视图控制器之间应该没有任何链接。 VC1应准备好监听来自数据模型的通知。当VC4更新数据模型时,数据模型将告诉正在监听的任何人已更新数据模型。

通过此设置,任何数量的视图控制器都可以监听传递的数据模型的同一实例。您应用的任何部分都可以根据需要回复这些通知。这个设计的最好的部分是除了每个人都知道数据模型之外,没有任何类知道任何其他特定类。

数据模型不了解任何控制器或视图。

没有控制器与其他控制器有任何直接链接,除了需要提供另一个控制器的控制器。