ios - 保持模态 UIViewController 状态的最佳方法是什么?

标签 ios swift

我很难用一个标题来总结我的问题,所以我会在这里尽量说清楚。

我有一个 UIViewController (vc1),它通过 segue 将我链接到另一个 UIViewController (vc2)。

在 vc2 中,我可以选择 UISegmentedControl 的一段。

要返回到 vc1,我只需按下返回 UIButton 我在 @IBAction 所在的位置:

@IBAction func returnToMainView(sender: AnyObject) {
    self.dismissViewControllerAnimated(true, completion: nil)
}

我希望当我再次回到 vc2 时,我第一次选择的片段再次被选中。

我的解决方案是什么?

我是否应该继续使用 dismissViewControllerAnimated 方法并使用委托(delegate)方法来保存选择了哪个索引段。然后当我回到 vc2 时,在调用 vc2 的 segue 中传递选定的索引段?

或者是否有比 dismissViewControllerAnimated 更好的方法来保持我的 vc2 的状态?

希望我已经说得够清楚了。

更新:

这是关于我的案例的更多信息。

在 vc1 中,我有一个 UITableView。在每一行上,我都可以调用我的 vc2,它当然会根据行显示信息。

实际上,我只想为应用程序的当前执行保存此 Controller 的状态。无需持久化状态

最佳答案

为此,我正在使用 NSUserDefaults。所以如果我打开另一个 ViewController,我会在需要的地方保存我的 UIViews 的所有重要设置。

在您的示例中,在关闭 ModalViewController 之前,您可以保存例如 UISegmentedControl 的状态:

NSUserDefaults.standardUserDefaults().setInteger(segmentedControl.selectedSegmentIndex, forKey: "yourSwitch")

然后,在 ModalViewController 的 viewWillApear 方法中,调用 NSUserDefaults 并加载所有设置:

var selectedIndex = NSUserDefaults.standardUserDefaults().integerForKey("yourSwitch")

之后在 viewDidAppear 方法中,调用值:

segmendedControl.selectedSegmentIndex = selectedIndex

关于ios - 保持模态 UIViewController 状态的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28731437/

相关文章:

iphone - 已通过身份验证后,Facebook 登录屏幕在 iPhone 应用程序上闪烁

ios - 测试可选的 nil 并将 nil 切换为 0

ios - 将 UIImageView 与 xib 中的 Aspect Fit 对齐

xcode - 存档时 MBProgressHud Swift 编译错误

ios - 获取 token 和用户信息 iOS Swift

swift - 如果 PromiseKit promise 已经在运行,那么返回待定 PromiseKit promise 的最佳 Swift 模式是什么?

ios - 使用以下方法消除 UINavigationbar 和另一个 View 之间的黑字符串的秘诀是什么?

iOS:GPUImage 库和 VBO

ios - 是否有可能有一个符合相同协议(protocol)的结构数组也支持 Codable?

Swift:两个 CAAnimation 禁用之间的区别