我有一个主菜单类型的视图控制器(让我们称之为MainVC
)有2个按钮 - 一个模态呈现另一个常规VC(SourceVC);另一个推送表VC(DestinationVC
)。 <{1}}和SourceVC
NOT 直接连接。
每当DestinationVC
执行SourceVC
时,它就会创建一个对象。我希望MethodX
在SourceVC
结束时将该对象发送到DestinationVC
,以便将其存储在其表中。我的问题是:
有没有办法将对象直接从源传递到目标(即代理)?
如果没有,那么我应该如何传递这些数据呢?
修改 为了清楚起见,我想强调通过数据的VC没有直接连接/转换。
以前曾多次询问过在VC之间传递数据的问题;然而,在每种情况下,VC都直接连接(即SourceVC推送/模块呈现DestinationVC)。我想知道发送数据间接是否有所不同,(在我的例子中,主视图模拟呈现SourceVC,主视图推送DestinationVC)。我知道怎么做前者,但是当VC独立时我遇到了麻烦。抱歉有任何困惑。
答案 0 :(得分:0)
您可以通过父视图控制器或使用通知。
有关向前和向后传递数据的信息,请参阅此过去的问题:
stackoverflow.com/a/5210861/3160849
但请注意,在该答案中,假设您在VC创建时传递数据。在您的情况下,一旦VC已经创建,您就会通过。因此仅仅传递数据还不够,接收VC也需要知道它已被发送,因此它可以刷新它的视图(我认为你要做的是什么)。因此,您可以例如在父VC和目标VC之间使用委托(但是通过其他方式可能是通常的)。或者您可以使用KVO让目标在父级设置数据对象时注意。然后刷新。
或者您也可以使用通知。您也可以使用它而不是通过父视图控制器。使用通知可以很好地将对象彼此分离(但是不需要解耦总是打算一起使用的对象)。在您的情况下,使用您认为最容易的方式。通知稍微清晰一些,但您必须将数据打包并解压缩到通知对象中。