我在故事板中创建了一些segue
。它有一些标识符。我配置destinationViewController
并在方法destinationViewController
中将某个对象指定为此prepareForSegue:sender:
的属性。该对象也是我的控制器的属性,称为segue
。在destinationViewController
我得到BarButtonItem
,当我按下它时,我打电话给其他segue
,然后我回到上一个视图。当我在这个viewController中时,传递给destinationViewController
的具有此对象的属性等于nil
。有可能做这样的事吗? :
SourceViewController
时someProperty
我设置DestinationViewController
的属性。DestinationViewController
回来时,someProperty
中的SourceViewController
的属性不为空 - 它应该与切换viewController之前相同。有可能吗?
现在我必须将someObject
从A
传递到B
,当我切换视图时,我必须将someObject
从B
传递到A
- 同一个对象。
感谢您的回复和帮助。
答案 0 :(得分:2)
当您返回到另一个视图时,请尝试不使用其他segue。您应该能够关闭当前视图,无论是使用导航控制器还是模态。至于你需要相同的对象,当你将它传递给控制器B时,保持对控制器A中对象的引用。两个控制器都将引用同一个对象,因此在控制器B中对它进行更改将显示在对象中在控制器A中自动引用。
答案 1 :(得分:1)
你真的不应该这样做,原因是当你回到SourceViewController它实际上会创建一个新VC并将其推送到堆栈上,这样你的堆栈就会结束'SourceVC,DetailVC,SourceVC'可能不是你想要的!您可能希望导航控制器弹出DetailVC([self.navigationController dismissViewControllerAnimated:YES]
)
至于财产。这取决于属性是什么,如果你有更多,但根据MVC模式,你很有可能想要创建一个为你处理这个变量的模型类。然后,当您推送到DetailVC时,您传递对模型的引用,DetailVC可以通过模型访问该变量(获取或设置)然后当您弹回SourceVC时,它可以使用它已经拥有的模型的引用检索新设置的属性。