Ios 当目标不是UIViewController时设置代理

Ios 当目标不是UIViewController时设置代理,ios,uistoryboardsegue,uicontainerview,Ios,Uistoryboardsegue,Uicontainerview,我一直在阅读有关StackoverFlow和internet的文章。 这可能是我有限的知识,我无法找到解决这个问题的方法。 以下是我的故事板设置。 为了便于理解,让我们把它们称为firstVC secondPageVC和thirdTableVC 我基本上是在容器视图中显示pageViewController,其中PageView控制器inturn具有tableView。 我在故事板上的第一个场景有一种方法,就是通过互联网获取数据。我需要以填充tableview的方式向下传递这些数据 通过我的研

我一直在阅读有关StackoverFlow和internet的文章。 这可能是我有限的知识,我无法找到解决这个问题的方法。 以下是我的故事板设置。

为了便于理解,让我们把它们称为firstVC secondPageVC和thirdTableVC 我基本上是在容器视图中显示pageViewController,其中PageView控制器inturn具有tableView。 我在故事板上的第一个场景有一种方法,就是通过互联网获取数据。我需要以填充tableview的方式向下传递这些数据

通过我的研究和试验,我发现。FirstVC中的PrepareForSegue正在被立即调用,因为containerView需要填写内容,即内部的pageViewController。一旦加载secondPageVC,它就需要找到它的启动视图控制器。一旦加载了secondPageVC,它就会尝试加载thirdTableVC

我在firstVC中编写了一个协议,以便在数据更新时可以传递数据。 我很困惑,哪个视图控制器应该是委托的,或者符合这个协议。 我正试图使secondPageVC符合这个协议,作为它的下一个VC,其中控制器是通过的,并且是第一个逻辑选择。 但是,如果我不使用prepareForSegue,如何设置委托。 我无法将prepareForSegue用作destinationViewController必须是UIViewController

我很想在这个问题上有所指点。 如果需要对该问题进行更多澄清,请发表评论


更新:感谢回复的朋友们。他们的想法使我产生怀疑。我想做的事。这是个好办法吗。作为一位同事,他建议要有通知。这显然是另一种方法

在考虑委派时,您需要知道哪些对象需要更新。当某些内容发生更改时,需要更新的内容都应该由代理来完成。无论要做什么,更新都应该具有delegate属性

在这种特定情况下,由于您的
firstVC
将执行更新,因此它应该是具有委托属性的对象


您应该能够使用
prepareForSegue
而不会出现任何问题。是的,
destinationViewController
的类型将是
UIViewController
,但您知道,只要segue是您想要的segue,它将是视图控制器的类型。您只需将
destinationViewController
强制转换为正确的类型,然后设置委托属性。

我不明白不能使用prepareForSegue是什么意思,但这可能不是协议的最佳情况。您的俯视图控制器只需遍历视图控制器层次结构即可找到表视图。Vc1有一个对constainer的引用,constainer有一个对pageview的引用,pageview有一个对tableview的引用,或者您可以在第一个preparwForSegue中设置一个委托属性,并在下一个preparwForSegue中传递它,尽管这有点难看。我可能只会使用NSNotification通知tableview新数据