【发布时间】:2013-05-24 10:04:31
【问题描述】:
我是 iOS 编程新手,我正在开发一个同时使用 XIB 文件和情节提要的项目。 我基本上有两个模块。第一个模块由也独立运行的 XIB 文件组成。我使用故事板制作了另一个模块,我必须集成这两个独立运行的模块。我想连接到我的故事板的第一个模块的屏幕是 UIViewController 的子类,我可以通过创建 UIStoryBoard 的对象在 stackoverflow (How to load a storyboard from a XIB file?) 的帮助下做到这一点。现在我的应用程序能够进入情节提要,但我无法回到由 XIB 文件组成的第一个模块。
请告诉我如何连接到调用情节提要的第一个模块的最后一个屏幕的同一实例,以便我可以轻松地在这些视图中来回移动。连接到 XIB 文件的同一个实例很重要,因为它是一个聊天屏幕,当我回到这个屏幕时,我想回到我离开它的聊天以及当我回到故事板时(通过单击聊天屏幕上的按钮)我在屏幕上有一个滑块,它应该显示用户上次在此屏幕上时必须选择的值。我想创建一个新对象应该会给我一个在这种情况下不起作用的新屏幕。这种机制在使用 segue 的故事板中运行良好,我们可以在其中定义源视图控制器和目标视图控制器。
请帮助我在我的情况下实现同样的目标。
还请检查XIB文件的屏幕截图和我要连接的情节提要。
谢谢。
【问题讨论】:
-
在您使用
[self presentViewController:storyViewController animated:YES completion:nil];的示例中,您不能直接关闭storyViewController -
是的,这就是问题所在。当我再次必须去那个情节提要时,我将再次去
-IBAction,并且将为情节提要创建一个新对象,并且该对象将再次将我的滑块初始化为默认值,而不是用户所在的那个上次离开了。如果我错了,请纠正我。 -
但是你总是可以检查storyboard是否已经实例化
if(mainStoryBoard!=nil) { *mainStoryBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; [mainStoryBoard instantiateViewControllerWithIdentifier:@"StoryViewController"]; } -
在上面的代码中,我认为正在发生的是首先检查情节提要的对象是否已初始化。如果不是,那么它将采用上次必须初始化的前一个对象。并且该代码将在
if之外。我会试试这个,也许这会起作用,但这将是我问题后期的解决方案。首先,我如何回到 XIB 文件的 viewController 来测试你的代码? -
您可以将
lastSceenViewController对象保存为appdelegate中的属性,并使用[UIApplication sharedApplication] delegate]访问该对象。
标签: iphone ios xcode interface-builder storyboard