2015-06-04 16 views
6

Desidero avere un pulsante sulla barra di navigazione "Ripristina" e vorrei che questo fosse collegato a un IBAction in modo da "riavviare" il controller.Come resettare/riavviare viewcontroller in Swift?

Ho alcune segues da un altro controller che modifica alcuni aspetti dello viewcontroller (che ha un collectionview) e voglio che l'utente sia in grado di ricominciare. Qualcuno ha qualche suggerimento su come procedere?

risposta

0

Perché non chiudere e presentare nuovamente il controller di visualizzazione? O magari passare un valore booleano dal controller della vista al controller della vista che presenta (quello che apre il controller della vista della collezione), rilevarlo alla vista apparirà e presentare nuovamente il controller della vista (con la vista dell'insieme). Puoi impostare la bandiera animata su (falso) quando lo fai, quindi sembra che tu stia ripristinando tutto.

-2

Prova questa

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() 

} 

È quindi possibile creare un pulsante e allegare un metodo @IBAction con il metodo refreshView in esso in questo modo

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

Non si dovrebbe mai chiamare viewDidLoad e ... da soli Il sistema dovrebbe solo chiamarli –

0

Questo è come lo faccio a Swift 2.1 con la mia Vista interna all'interno di 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

Se si incorpora controller di navigazione al vostro controller della vista quindi è possibile utilizzare questo codice:

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) 
0

È possibile modificare RootViewController della vostra applicazione:

UIApplication.shared.keyWindow?.rootViewController = UIViewController()

Problemi correlati