2016-06-07 10 views
1

In meinem Swift-Projekt hat ViewController # 1 eine Route von Zielen, die in einer Tabelle aufgelistet sind. Der Nutzer fährt mit und wir verfolgen, wo Nutzer die CLLocation-Inhalte verwenden. Aber der Benutzer hat jetzt von ViewController # 1 zu einem anderen Teil der App navigiert und befindet sich jetzt in ViewController # 2. Ein bestimmtes Ereignis, das ich in ViewController # 1 trage, wird ausgelöst (in meinem Beispiel hat der Benutzer das nächste Ziel auf seiner Liste erreicht). Ich brauche die App, um direkt zu ViewController # 1 zu springen, wenn dieses Ereignis ausgelöst wird. Wie kann es wahrgenommen werden, wenn sich der Benutzer in ViewController # 2 befindet?Programmgesteuert zum ersten Controller bei Ereignis des ersten Controllers zurückkehren

+2

Sie können mit 'NSNotificationCenter'and Push-Benachrichtigung und erfassen diese Benachrichtigung über alle Ihre App und gehen überall in Ihrem App zu ViewController # 1 oder Sie können zeigen, dass der Benutzer dort ist, wo er benötigt wird –

+0

Vielen Dank! Ich werde das überprüfen. –

Antwort

1

NSNotificationCenter und ein Unwind Segue scheint der Weg zu sein, auf diese Weise kann diese Funktionalität wiederverwendet werden, alles, was Sie tun müssten, ist für eine bestimmte Benachrichtigung auf den relevanten View-Controller registrieren.

Etwas entlang der Linien von:

class ViewControllerOne: UIViewController { 

    let CallForUnwindSegue = "com.yourIdentifier.unwindToVCOne" 

    //- your event happens 
    SomethingHappened { 
     NSNotificationCenter.defaultCenter().postNotification(CallForUnwindSegue, object: nil) 
    } 
} 


class ViewControllerTwo: UIViewController { 

    let CallForUnwindSegue = "com.yourIdentifier.unwindToVCOne" 

    override func viewDidLoad() { 
     super.viewDidLoad() 

    //- Subscribe for notifications 
     NSNotificationCenter.defaultCenter().addObserver(self, #selector(self.doSomething), name: CallForUnwindSegue) 
    } 

    //- Unsubscribe for notifications 
    override func deinit { 
     NSNotificationCenter.defaultCenter().removeObserver(self) 
    } 

    func doSomething(notification: NSNotification) { 
     //Handle your event here. 
    } 
} 

Es gibt einen guten Abroll segue Artikel here

+0

Danke, ich kenne den Abwicklungsbereich. Das habe ich schon mal gemacht. Die Frage wurde über Änderungen informiert, und hier kommt der NSNotification-Teil ins Spiel. Danke für das Codebeispiel - genau das habe ich gesucht. –

+0

Kein Problem! froh, dass es geholfen hat. –

+0

Ich weiß nicht, warum 5 Moderatoren diesen Beitrag als "zu breit" zurückgestellt haben. –

Verwandte Themen