2012-04-05 8 views
21

Ich habe ein XCode iPad-Projekt mit einem Navigationscontroller. Ich habe versucht, einen Knopf zu bekommen UISplitViewController zum Navigationsstapel zu schieben, aber habe diesen Fehler:iOS: UISplitViewController kann nicht zu UINavigationController geschoben werden

Split View Controllers cannot be pushed to a Navigation Controller

Es stellte sich heraus UISplitViewController nicht gut mit UINavigationController spielt. Allerdings muss ich den Split-View-Controller immer noch anzeigen, wenn auf diese Schaltfläche geklickt wird. Wie mache ich das? Und, auch wichtig, wie mache ich einen Zurück-Knopf, damit der Benutzer zum Navigationscontroller zurückgebracht werden kann?

Antwort

28

Um einen SplitViewController anzuzeigen, müssen Sie setRootViewController verwenden. Dies liegt daran, dass ein SplitViewController der Root View Controller sein muss.

Von Apple Dokumentation:

A split view controller must always be the root of any interface you create. In other words, you must always install the view from a UISplitViewController object as the root view of your application's window. The panes of your split-view interface may then contain navigation controllers, tab bar controllers, or any other type of view controller you need to implement your interface.

Um wieder werden Sie brauchen setRootViewController zu verwenden, um die frühere Seite zurückzukehren. Ich stieß auf dieses Problem, als ich meine iPhone App auf universal umwandelte und am Ende einen Navigationscontroller für das iPhone und setRootViewController für die iPad-Version verwendete. Es ist ein bisschen ein Mist, weil Sie es nicht schön animieren können without a bit of fudging.

+0

Wie würde ich setRootViewController verwenden? Google sagt mir, dass es eine Methode von UIWindow ist, aber ich kann nicht herausfinden, wo ich eine UIWindow-Instanz finden kann. –

+2

Sie müssen es als eine Eigenschaft von Ihrem App-Delegat wie folgt greifen: MyAppDelegate * appDelegate = (MyAppDelegate *) [[UIApplication sharedApplication] Delegat]; und dann [appDelegate.window setRootViewController: shareSelectViewController]; – glenstorey

+0

vielen dank! –

Verwandte Themen