2017-02-27 7 views
0

Ich habe ein Projekt, das einen Tab-Controller als Haupt-Seite enthält.Controller innerhalb von UITabController anzeigen

Ich möchte eine UITabBar-Schaltfläche Element hinzufügen, die eine Ansicht Controller-Modalität präsentiert, und in diesem Ansicht Controller, fügen Sie eine Schaltfläche zum Schließen, die diese Ansicht Controller und kehrt zur vorherigen Registerkarte Auswahl zurück.

Um zu verdeutlichen, ist es etwas, dass die Medium-App für iOS verwendet, wenn Sie auf den Artikel erstellen klicken, es präsentiert es modal und entlässt es, wenn Sie möchten.

Ich kann den View-Controller präsentieren, aber ich kann es nicht ablehnen.

Hoffe, ich machte mich verständlich.

Beispiel: Pressing the middle button

+0

ich hier gelesen habe, dass ich konnte fügen Sie eine leere Registerkarte als Platzhalter hinzu und fügen Sie dann eine Schaltfläche als Unteransicht hinzu, dann in der Button-Eigenschaft Ich könnte die Viewcontroller-Modalität aufrufen. Aber wie kann ich eine leere Registerkarte als Platzhalter hinzufügen? –

Antwort

0

So habe ich es geschafft, dieses Problem zu lösen, wie ich wollte, hoffen, dass die Antwort jemand in der Zukunft helfen wird.

Zunächst einmal ich auf meinen ersten geladenen View-Controller gesetzt, läßt meinen View-Controller ‚Home‘ sagen die tabBarController Delegierten meine AppDelegate.swift Datei zu sein (dies ist persönliche Präferenz), wie:

self.tabBarController?.delegate = UIApplication.shared.delegate as? UITabBarControllerDelegate 

Dann in meiner AppDelegate.swift Datei hinzugefügt i zu den Klasseneigenschaften der Delegierten UITabBarControllerDelegate so kann ich die tabBarController delegieren Funktionen zugreifen, wie

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {}

Dann wurde die Funktion bearbeitet, um mit meinem spezifischen View-Controller zu interagieren.

Die endgültige Version der Funktion:

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { 
    if viewController is ViewControllerToPresentModaly { 
     if let newVC = tabBarController.storyboard?.instantiateViewController(withIdentifier: "modalVC") { 
      tabBarController.present(newVC, animated: true) 
      return false 
     } 
    } 

    return true 
} 

Hier, wenn Sie die regelmäßige Registerkarte Verhalten möchten, return true oder eigene return false

;)

Verwandte Themen