我想在我的导航栏上设置一个“重置”按钮,我希望将其连接到IBAction
以重新启动控制器。
我有一些来自另一个控制器的segue改变了viewcontroller
(有一个collectionview
)的某些方面,我希望用户能够重新开始。有没有人对如何进行有任何建议?
答案 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()
}