我准备好了与prepareForSegue相同的对象吗?

时间:2013-02-02 14:08:53

标签: ios objective-c cocoa-touch segue

我在故事板中创建了一些segue。它有一些标识符。我配置destinationViewController并在方法destinationViewController中将某个对象指定为此prepareForSegue:sender:的属性。该对象也是我的控制器的属性,称为segue。在destinationViewController我得到BarButtonItem,当我按下它时,我打电话给其他segue,然后我回到上一个视图。当我在这个viewController中时,传递给destinationViewController的具有此对象的属性等于nil。有可能做这样的事吗? :

  1. 当我在SourceViewControllersomeProperty我设置DestinationViewController的属性。
  2. 当我从DestinationViewController回来时,someProperty中的SourceViewController的属性不为空 - 它应该与切换viewController之前相同。
  3. 有可能吗?

    现在我必须将someObjectA传递到B,当我切换视图时,我必须将someObjectB传递到A - 同一个对象。

    感谢您的回复和帮助。

2 个答案:

答案 0 :(得分:2)

当您返回到另一个视图时,请尝试不使用其他segue。您应该能够关闭当前视图,无论是使用导航控制器还是模态。至于你需要相同的对象,当你将它传递给控制器​​B时,保持对控制器A中对象的引用。两个控制器都将引用同一个对象,因此在控制器B中对它进行更改将显示在对象中在控制器A中自动引用。

答案 1 :(得分:1)

你真的不应该这样做,原因是当你回到SourceViewController它实际上会创建一个新VC并将其推送到堆栈上,这样你的堆栈就会结束'SourceVC,DetailVC,SourceVC'可能不是你想要的!您可能希望导航控制器弹出DetailVC([self.navigationController dismissViewControllerAnimated:YES]

至于财产。这取决于属性是什么,如果你有更多,但根据MVC模式,你很有可能想要创建一个为你处理这个变量的模型类。然后,当您推送到DetailVC时,您传递对模型的引用,DetailVC可以通过模型访问该变量(获取或设置)然后当您弹回SourceVC时,它可以使用它已经拥有的模型的引用检索新设置的属性。