2017-09-06 2 views
4

Ich habe einen ViewController, auf den ich klicken kann, indem ich auf TabBarItem klicke oder auf Table View Controller B, indem ich Plus in der Navigationsleiste drücke.Wie zeige ich einen der beiden ViewController an, indem ich auf Abbrechen klicke?

Mein Problem

Wie auf der auf dem Viewcontroller Abbrechen-Taste, indem Sie auf, ich Table View Controller B gehen kann, wenn ich zu Viewcontroller aus Tabelle View-Controller-B Hit von zu Tabellenansicht plus oder gehen klicken Controller A, wenn ich auf ViewController klicke, indem ich das zweite (blaue) Registerkartenelement wähle?

Ich möchte zwei Aktion auf Abbrechen Schaltfläche auf dem ViewController festlegen - je nach dem vorherigen Controller möchte ich zu TableViewControllerA oder TableViewControllerB gehen, ist es möglich?

Einzelheiten

Erste Version des Übergangs: Mit einem Klick auf Plus-Taste auf der TableViewControllerB ich Viewcontroller gehen und auf Viewcontroller klicken I Schaltfläche Abbrechen und TableViewControllerB zurückzukehren.

Zweite Version des Übergangs: Durch zweiten TabBarItem auf dem TabBar-Controller klicken gehe ich auf Viewcontroller und auf Viewcontroller klicken I Schaltfläche Abbrechen und TableViewControllerA zurückzukehren.

Schema of my project

+0

Bitte geben Mehr Details zu Ihrem Anliegen im Detail durch Aktualisierung Ihrer Frage. So kann ich dir besser helfen. Was genau willst du? – Krunal

+0

Dies ist eine verwirrende Navigation. Der Benutzer sieht 'Table-A' - und' RedTab' ist aktuell angewählt ... user tippt '+' und Sie wollen zu 'ViewController' navigieren und automatisch' BlueTab' auswählen? Und dann eine Schaltfläche "Abbrechen", die zu "Table-A" zurückkehrt und "RedTab" auswählt? Und die gleiche (verwirrende) Navigation mit 'Table-B' ??? – DonMag

+0

versuchen Sie es mit einer aktualisierten Antwort ... – Krunal

Antwort

1

Es gibt zwei Möglichkeiten, um zu erreichen, was Sie wollen, ganz nach Ihrem View-Controller-Flussdiagramm.

  1. Pop root-View-Controller
  2. Pop zu Specific View-Controller (Tableviewcontroller A)

Sie entscheiden müssen, welche Optionen sollten Sie Ihre Anforderung verwenden, nach.

hinzufügen/ersetzen, um Ihre Löschtaste folgenden Code und versuchen Sie eine beide Optionen nach dem anderen:

@IBAction btnCancel_Action(button: UIButton) { 

    // 1. Pop to root view controller 
    self.navigationController?.popToRootViewController(animated: true) 

    // OR 
    // 2. Pop to Specific view controller (TableViewController A) 

    if let navController = self.navigationController { 

     for viewcontroller in navController.viewControllers { 
      // `TableViewControllerA` class name for view controller or you can use instance of `TableViewControllerA` also with `viewcontroller == <TableViewControllerA>` 

      if viewcontroller is <TableViewControllerA> { 
      //if viewcontroller == <IntanceOfTableViewControllerA> { 
       self.navigationController?.popToViewController(viewcontroller, animated: true) 
       break 
      } 

     } 
    } 
} 



Edited Antwort nach Frage bearbeiten: Versuchen Sie, diese

@IBAction btnCancel_Action(button: UIButton) { 
if let tabController = self.tabBarController { 
      if tabController.selectedIndex == 0 { 
       self.navigationController?.popViewController(animated: true) 
      } else if tabController.selectedIndex == 1 { 
       self.tabBarController?.selectedIndex = 0 


       // If your tabbar 0 has TableViewControllerB is active on screen then use following code 
       if let navController = self.tabBarController?.navigationController { 
        navController.popToRootViewController(animated: false) 

        /* 
        //or 
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: { 
         navController.popToRootViewController(animated: false) 
        }) 
        */ 
       } 


      } 
     } 
} 
+0

Ja, beide Thins sind möglich, je nach Fluss haben Sie in Ihrer Ansicht Controller-Diagramm gezeigt. Probieren Sie die zweite Option aus und legen Sie die Bedingungen entsprechend Ihrer Anforderung fest. – Krunal

+0

Teilen Sie mir mehr Details über zwei Bedingungen, die Sie für Abbrechen Schaltfläche einstellen möchten.So kann ich Ihnen besser helfen. – Krunal

+0

Ich habe mehr Details über Varianten von Segeln hinzugefügt. –

Verwandte Themen