如何在转到选项卡栏控制器 Swift 中的另一个选项卡后保持 ViewController 详细信息相同

How to keep ViewController details the same after going to another tab in Tab Bar Controller Swift

我的标签栏控制器有问题。在选项卡 1 上,我有一张地图。地图采用自动布局以填充大约一半的屏幕。我可以选择全屏显示地图。如果我要让地图全屏显示,转到选项卡 2 并 return 转到选项卡 1,地图将回到其自动布局位置。在这种情况下,我需要它是全屏的。

关于如何克服这个问题有什么想法吗?

我要做的是使用以下方式保存用户偏好:

NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isMapFullScreen")

然后在 ViewWillAppear 中,只需执行以下操作:

if (NSUserDefaults.standardUserDefaults().boolForKey("isMapFullScreen")) {
     // Put map on full screen
}

好的,所以我重现了您的案例,并且在尝试从 viewDidAppear 调用该函数时我可以看到故障部分。但是,当我将逻辑放在 viewDidLayoutSubviews 中时,它非常流畅。以下是我试过的代码:

@IBOutlet weak var map: MKMapView!

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    if (NSUserDefaults.standardUserDefaults().boolForKey("isMapFullScreen")) {
        self.map.frame = self.view.bounds;
    }
}

@IBAction func buttonIsClicked(sender: AnyObject) {

    self.map.frame = self.view.bounds;
    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isMapFullScreen")
}