如何在转到选项卡栏控制器 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")
}
我的标签栏控制器有问题。在选项卡 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")
}