2016-05-25 8 views
0

Ich habe ein Problem mit meinem Projekt.ViewingController in Navigation vorstellenController

Ich habe einen benutzerdefinierten Übergang von einem VC zu einem anderen erstellt. Arbeitete gut, aber mein Projekt erweitert sich und so brauchte ich einen Navigationscontroller.

func itemButtonTapped(item: Item?) { 
    if let item = item { 
     let itemVC = storyboard!.instantiateViewControllerWithIdentifier("ItemViewController") as! ItemViewController 
     itemVC.item = item 
     itemVC.transitioningDelegate = self 
     //navigationController?.presentViewController(itemVC, animated: true, completion: nil) // #1 
     //navigationController?.pushViewController(itemVC, animated: true) //#2 
    } 
} 

Der obige Code dient dazu, ViewController zum vorhandenen Navigationscontroller hinzuzufügen.

Option # 1 - verwendet es meine Gewohnheit Übergang und präsentiert VC aber es stellt Sie es nicht in dem bestehenden navigiationController

Option # 2 - es meint keinen benutzerdefinierten Übergang verwenden, sondern präsentiert VC in dem embeded existing navigationController

Was soll ich tun, um diese Optionen zu kombinieren, damit ich meine VC mit benutzerdefinierten Übergang zeigen und es zu bestehenden NavigationController hinzufügen kann?

+0

haben Sie versucht, beide zu tun? und setze pushViewController() animated auf false. Auf diese Weise wird es dem Stapel hinzugefügt und erhält den Übergang. Das einzige Problem ist, dass sich 2 Viewcontroller in der Navigation befinden. Ich würde Ihre transitioningDelegate-Funktion so ändern, dass pushViewController anstelle von present oder beides verwendet wird, und rufen Sie einfach Option 2 auf – NSGangster

Antwort

1

UINavigationController ist ein Sonderfall, und Sie können nicht einfach einen übergehenden Delegaten verwenden, wie Sie es für normale View-Controller tun. Stattdessen müssen Sie dem Protokoll UINavigationControllerDelegate entsprechen und über diese Methoden die benutzerdefinierte Übergangsanimation bereitstellen, die Sie implementieren möchten. hier

Dokumentation:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationControllerDelegate_Protocol/