iOS Swift,返回到视图控制器的同一个实例
我遇到了问题,我有两个视图控制器A和B.视图控制器B有一个地图,上面有一个路线绘图。我此时可以在两个视图控制器之间前后移动,但每次加载时都会重置B视图控制器。我想这是因为我正在使用segues并且每次都在创建一个View控制器的新实例。
I have a problem, where I have two view controllers A and B. View controller B has a map, with a route draw on it. I can move back and forwards between the two view controllers at the moment, but the B view controller is reset every time it loads. I think this is because I am using segues and it is creating a new instance of a View controller every time.
我尝试使用以下代码来解决这个问题,但它仍然无法正常工作。视图加载正确,但视图控制器B仍在重置
I have tried using the following code to solve this issue, but it is still not working. The views load correctly, but view controller B is still being reset
@IBAction func mapButton(sender: AnyObject){
let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as! UIViewController
self.presentViewController(vc, animated: true, completion: nil)
}
我做错了什么,我该如何解决?我希望视图控制器B与地图和路径一起保留在内存中,因此当用户返回时,他不必再次输入所有信息。
What am I doing wrong and how can I fix it? I want view controller B to stay in the memory along with the map and the route, so when a user returns he doesn't have to enter all of the information again.
您应该在UIViewController类型的类中创建一个变量,并将代码更改为以下内容:
You should create a variable in your class of type UIViewController and change your code to the following:
@IBAction func mapButton(sender: AnyObject){
if yourVariable == nil {
let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
yourVariable = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as! UIViewController
}
self.presentViewController(yourVariable, animated: true, completion: nil)
}
这样你就可以创建一次viewController,保存它,如果你想再次打开它,就会显示之前创建的一个。
That way you create the viewController one time, save it and if you want to open it again present the previously created one.