2009-05-01 11 views
7

Ich bin ein newbi in iPhone-Entwicklung.Ich möchte eine App, die eine UIViewController zuerst, die eine Schaltfläche haben wird, erstellen.Nach dem Klicken auf die Schaltfläche, shud laden ein UINavigation Controller . Hier ist, wie ich nähert m:Laden Sie einen UINavigationController als Subview von UIViewController

  1. Ich habe eine UIViewController-Klasse, wo ich eine

    nahm
    -(IBAction) PressMeFunc:(id) sender 
    

    für die Taste gedrückt werden.

  2. Dann habe ich eine UIView Xib-Datei erstellt. Ich habe die erforderlichen Schritte in der IB.

  3. Dann in der AppDelegate, ich die ViewController-Instanz als Subview des Fensters hinzugefügt.

Bis dahin ist es in Ordnung.

Als nächstes, wie lade ich einen Navigationscontroller auf den Knopfdruck?

Ich weiß, wie man ein NavigationController-Projekt von der Fenster-basierten App baut, aber ich habe es schwer, NavigationController als Unteransicht von UIView zu tun.

Ihre Hilfe wird sehr geschätzt.

Antwort

8

Der NavigationController wurde entwickelt, um den Bildschirm zu übernehmen, wenn er verwendet wird. Sie müssen also entscheiden, wie Sie den Übergang zum NavigationController von Ihrem ursprünglichen ViewController aus verwalten. Sie können dies mit presentModalViewController tun, oder indem Sie die ursprüngliche Ansicht entfernen und den NavigationController programmatisch vertauschen.

Hier ist the Apple documentation zum programmatischen Einrichten eines NavigationController.

Der Code in etwa so aussehen wird (von dem Apple-doc):

GroupsController *groupsController = [[[GroupsController alloc] initWithNibName:nil bundle:nil] autorelease]; 
UINavigationController *navigationController = 
[[UINavigationController alloc] initWithRootViewController:groupsController]; 

Nun, wenn Sie die Navigation erstellt haben, und fügten hinzu, seinen ersten Viewcontroller, um es, müssen Sie es für den Übergang . Sie können das mit CATransitions tun, oder mit

[myViewController presentModalViewController: navigationController]; 
+0

Vielen Dank für Ihre schnelle Antwort. Ich habe das von Ihnen erwähnte Apple-Dokument heruntergeladen. Ich werde es durchlaufen und versuchen, NavigationController von UIViewController zu laden, obwohl ich nicht weiß, was presentModalViewController ist. Eigentlich möchte ich ein XML in NavigationController laden, indem ich auf eine Schaltfläche in UIViewController klicke. Grüßen, Xcodermi2 – XcoderMi2

+2

dies eine Schande, von Apple ist, gibt es eine Menge von Fragen, wenn Sie UINavigationController ist in das Hauptfenster nur noch hinzufügen, könnten sie zumindest eine Notiz in der Dokumentation – valexa

5

Sie sollten eine UIViewController der (einschließlich Navigation) Ansicht als Subview auf eine Ansicht von einem anderen View-Controller verwaltet nicht hinzufügen.

Hier ist ein relevantes Lese: http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

In Ihrem Fall, was Sie tun können, ist nach Ansicht des Viewcontroller entfernen Fenster, dann fügen Sie die Ansicht des Navigationscontroller zum Fenster.

[viewController.view removeFromSuperview]; 
[window addSubview:navigationController.view]; 

Sie können es auch als modal View-Controller hinzufügen, wie hier vorgeschlagen wurde, oder Sie können die erste View-Controller einen Navigation-Controller machen, und auf diesen Stapel der Navigation-Controller, drücken Sie die 2. Navigationssteuerung:

[navigationController pushViewController:secondNavigation animated:NO]; 

Edit: heh nur bemerkt, ich bin der Beantwortung einer Frage 09

Edit # 2: Dies kann zu iOS 5 und der UIViewController Containment, was sie hinzugefügt haben, hatte noch keine Chance irrelevant sein zu überprüfen, es heraus, aber wenn Sie Wenn du diese Antwort liest, willst du vielleicht.

+2

+1 für die Beantwortung und 10 gemacht um eine '09 Frage zu beantworten! :) – Jann