iphone - 防止 View Controller 被重置 - UINavcontroller + Storyboard + Segue's

标签 iphone objective-c uiviewcontroller storyboard segue

我需要一些帮助来为以下“问题”选择“正确”的解决方案。

我使用新的 Storyboard功能将应用程序的所有屏幕链接在一起。基本上结构可深入到:

[导航 Controller ] => [ View Controller #1] => [标签栏 Controller ] => [ View Controller #2]*

**(以及其他一些目前不重要的选项卡)*

我已将第一个 View Controller (#1) 的转场(推送)附加到选项卡栏 Controller 后面的 View Controller 。当用户在第一个 Controller 上按下某些东西时,会触发此推送并且工作正常。

// Execute preset segue
[self performSegueWithIdentifier:@"segueEventDetail" sender:self];

当用户(现在位于 View Controller #2 中)按下导航栏中的后退按钮时,用户将返回。假设他现在再次触发 segue,第二个 View Controller 再次显示,但现在已“重置”(空)。 (我相信在阅读了几个论坛和文章后,这是使用 segue 时的标准行为,因为它们每次都会破坏并重新初始化 View Controller ?)

这( View Controller 被重置)会带来问题,因为第二个 View Controller 的内容是动态的(取决于服务器的 JSON 响应),因此“需要” View Controller 保持完整(或者是当用户回来时恢复)。

我找到了多个描述同一问题的来源(见底部),但解决方案各不相同,我需要一些帮助来选择正确的解决方案。

总结:

  • 当用户按回键时,如何“保留”/保存 View Controller 的状态,同时保留 Storyboard 的使用,最好还保留 Segue 的使用

自己的想法:

#1 我现在正在考虑缓存对我的单例类的 JSON 响应(并从那里到 PLIST),并在第二个 View Controller 中检查该数据是否存在,然后重建查看后检查是否有任何新数据(恢复正常操作)。

#2 我正在考虑的另一个问题是“绕过”segue 并手动处理 View 切换,部分解释在 ( Storyboard - refer to ViewController in AppDelegate ) - 这也可能吗?

但也许有一个更简单/更好的选择?

http://www.iphonedevsdk.com/forum/iphone-sdk-development/93913-retaining-data-when-using-storyboards.html Storyboard - refer to ViewController in AppDelegate How to serialize a UIView?

最佳答案

是的!我得到了解决方案。执行以下操作:

在您的 .h 文件中:

@property (strong, nonatomic) UITabBarController *tabController;

在您的 .m 文件中:

@synthesize tabController;

tabController = [self.storyboard instantiateViewControllerWithIdentifier:@"tabbar"];

所选索引是您要前往的选项卡

tabController.selectedIndex = 1;

[[self navigationController] pushViewController:tabController animated:YES];

关于iphone - 防止 View Controller 被重置 - UINavcontroller + Storyboard + Segue's,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8318752/

相关文章:

objective-c - AFNetworking 发布请求未通过 Sinatra 应用程序

objective-c - 覆盖所有 View Controller 的 viewWillDisappear?

iphone - 适用于 iPhone 模拟器,但不适用于设备

iphone - Singleton:在哪里创建实例?

ios - @media iphone 5 和 6 查询

ios - "(null) "的 Objective-c 正则表达式

iphone - 这两种在Objective-C中分配内存的方式有什么区别?

ios - 这段代码是错误的吗?

ios - 试图在父类(super class)中分配按钮的目标

ios - 如何在 Objective C 中的 UIViewController 上添加 UITabbar Controller 和 UINavigation 栏