2016-10-20 4 views
1

Ich habe eine Schaltfläche in meiner UITabBar, die ein Modal zeigen muss (in Swift 2). Ich habe gesucht und gesucht und einige Lösungen versucht, aber keiner von ihnen hat funktioniert. Ich habe vor kurzem diesen Link gefunden, der es geradeaus aussehen lässt: https://www.hackingwithswift.com/example-code/uikit/how-do-you-show-a-modal-view-controller-when-a-uitabbarcontroller-tab-is-tapped und versuche es zu verfolgen, aber ohne Erfolg.Modale Ansicht von UITabBar anzeigen Schaltfläche drücken

Mein Initial View Controller ist mein Main Table Bar Controller von class MainTabBarController: UITabBarController. In seinem viewDidLoad(), fügte ich den Code hinzu (ich denke, dass der Link eine ältere Version von Swift verwendet hat, so dass ich einige Syntaxänderungen von den Sachen in der Verbindung vornehmen musste): self.tabBarController?.delegate = UIApplication.sharedApplication().delegate as? UITabBarControllerDelegate.

Ich fügte dann UITabBarControllerDelegate meiner AppDelegate.swift und implementiert die folgenden in AppDelegate.swift, ich habe auch versucht, es in MainTabBarController setzen, aber es hat auch nicht:

Ich möchte darauf hinweisen, dass „CreateNavControllerViewController“ ist der Root-View-Controller zu meinem "CreateViewController", was ich anzeigen möchte. Aber ich habe meine mittlere Tabbar-Schaltfläche (der Standard-TabBarController zum Anzeigen-Link) mit der CreateNav verknüpft, die dann die Root-VC von Create ist. Im Modal möchte ich oben eine Navigationsleiste haben, weshalb ich CreateNav präsentieren möchte.

func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool { 
    print("inside shouldSelect VC") 
    if viewController is CreateNavControllerViewController { 
     print(" viewController is CreateNavControllerVC") 
     if let newVC = tabBarController.storyboard?.instantiateViewControllerWithIdentifier("CreateNavController") { 
      print("  if let newVC = ...") 
      tabBarController.presentViewController(newVC, animated: true, completion: nil) 
      return false 
     } 
    } 
    print("skipped everything, returning true") 
    return true 
} 

Keine der Druckanweisungen wird gedruckt. Also bin ich ziemlich ratlos. Kann jemand eine Lösung anbieten, wie man eine Schaltfläche in einer UITabBar bekommt, um eine Ansicht modal in Swift 2 darzustellen?

Edit: geändert (sollte ViewController :) an (sollte SelectViewController ViewController :) aber immer noch nichts. Ändert nur die normale Tabbar-Ansicht statt einer modalen, druckt nichts (Funktion wird nicht aufgerufen)

Edit2: Ich denke, ich habe es herausgefunden, legen Sie die VC meine Registerkarte zeigt zunächst zu erben von UITabBarControllerDelegate dann fügte diese Funktion hinzu und in viewDidLoad() set self.tabBarController?.delegate = self. Dies scheint jetzt zu funktionieren

Antwort

1

Sie

self.tabBarController?.delegate = UIApplication.sharedApplication().delegate as? UITabBarControllerDelegate

mit

self.delegate = UIApplication.sharedApplication().delegate as? UITabBarControllerDelegate

in Ihrem UITabBarController

+0

immer noch nicht funktioniert, kann nicht herausfinden, für das Leben von mir, was ist falsch –

0

Ist Ihr Controller in einem Navigations Controller verschachtelt ändern sollte? In diesem Fall sollten Sie prüfen, ob der erste View-Controller des Navigations-Controllers ein bestimmter Controller ist.

+1

Dies bietet keine Antwort auf die Frage. Sie können [ähnliche Fragen suchen] (// stackoverflow.com/search) oder auf die verwandten und verknüpften Fragen auf der rechten Seite der Seite verweisen, um eine Antwort zu finden. Wenn Sie eine verwandte, aber andere Frage haben, [stellen Sie eine neue Frage] (// stackoverflow.com/questions/ask), und fügen Sie einen Link zu diesem ein, um den Kontext zu verdeutlichen. Siehe: [Fragen stellen, Antworten erhalten, keine Ablenkungen] (// stackoverflow.com/tour) – Rob

Verwandte Themen