如何在Swift中重置/重启viewcontroller?

时间:2015-06-04 01:37:30

标签: swift

我想在我的导航栏上设置一个“重置”按钮,我希望将其连接到IBAction以重新启动控制器。

我有一些来自另一个控制器的segue改变了viewcontroller(有一个collectionview)的某些方面,我希望用户能够重新开始。有没有人对如何进行有任何建议?

5 个答案:

答案 0 :(得分:6)

如果您将导航控制器嵌入视图控制器,则可以使用以下代码:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("ViewController")
let viewcontrollers = self.navigationController.viewControllers
viewcontrollers.removeLast()
viewcontrollers.append(vc)
self.navigationControllers?.setViewControllers(viewcontrollers, animate: true)

答案 1 :(得分:1)

您可以更改应用程序的rootViewController:

?

答案 2 :(得分:0)

这就是我在Swift 2.1中使用我的主页视图在UINavigationController

中执行此操作的方法
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let homeVC = storyboard.instantiateViewControllerWithIdentifier("HomeViewController")
self.navigationController?.presentViewController(homeVC, animated: false, completion: nil)
self.navigationController?.dismissViewControllerAnimated(false, completion: nil)

答案 3 :(得分:-1)

为什么不再次关闭并呈现视图控制器?或者可以将视图控制器中的布尔值传递给呈现视图控制器(打开集合视图控制器的那个),在视图上检测它将出现并再次呈现视图控制器(带有集合视图)。当你这样做时,你可以将动画标志设置为(false),所以你似乎正在重置所有内容。

答案 4 :(得分:-3)

试试这个

func refreshView() {

// Calling the viewDidLoad and viewWillAppear methods to "refresh" the VC and run through the code within the methods themselves
self.viewDidLoad()
self.viewWillAppear()

}

然后,您可以创建一个按钮并附加@IBAction方法,其中包含refreshView方法,如此

@IBAction func refreshVC(sender: AnyObject) {
     self.refreshView()
}