Laden UINavigationController aus einer anderen Feder automatisch von UITabBarController

StackOverflow https://stackoverflow.com/questions/883510

  •  22-08-2019
  •  | 
  •  

Frage

Ich denke, dass ich die Ursache gefunden haben: Dokument-Info-Fenster in IB hat eine Warnung: "‚Selected Navigation Controller (Zweite)‘hat Eigenschaft nib Name auf‚SecondView.nib‘, aber diese Ansicht-Controller nicht beabsichtigt, seine Ansicht Satz auf diese Weise zu haben. "

Bummer.


Ich habe gebaut Spitze im Interface Builder, die auf höchstem Niveau und schaltet zwischen UITabBarControllers UINavigationController hat.

Es funktioniert gut, wenn alles in einer einzigen nib Datei ist, aber ich mag getrennte nib Dateien für UINavigationControllers verwenden.

Beginnend mit Apples TabBar-Vorlage, wenn ich nur Klasse von SecondView ändern UINavigationController, es alle Pausen:

zweite Spitze

und alles, was ich bekommen, ist dies:

// imgur has lost the image, sorry //

Ist es möglich, separate Datei für UINavigationController zu haben, ohne alles programmatisch einstellen?

Ich mag TabBarController Be- und Entladen von Nibs zu behandeln.

War es hilfreich?

Lösung

tauscht einfach die UINavigationController mit dem FirstViewController.

So ist die Hierarchie so sein sollte:

Tab bar controller
-----Tab bar
-----Navigation Controller
----------First View Controller
---------------Navigation Item
----------Tab bar item (First)
-----Navigation Controller
----------Second View Controller
---------------Navigation Item
----------Tab bar item (Second)

Sie stellen die Spitze der First View-Controller im Inspektor auf die NIB-Datei die aktuelle Ansicht Objekte enthält (Da Sie versuchen, sie in separate Dateien aufgeteilt, was eine gute Sache ist).

Sie haben einen Vorsprung, dass Tab hat eine Navigationssteuerung, den First View Controller als seine Stammansicht lädt.

Fertig.

Andere Tipps

Ich habe nicht versucht UINavigationController über IB einrichten. Ich habe mehrere Bildschirme, die jeweils in getrennter XIb gespeichert und es gibt eine entsprechende Klasse, die UIViewController erstreckt. In applicationDidFinishLaunching initialisieren ich UIViewControllers xib die Verwendung aber dann UINavigationController manuell erstellen, Navigationssteuerung Sicht auf Fenster hinzufügen und den ersten Blick zur Navigation Controller drücken.

Nicht sicher, ob das hilft.

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    navigationController = [[UINavigationController alloc] init];

    FirstViewController * viewController = [[FirstViewController alloc] 
                                           initWithNibName:@"FirstView"
                                                    bundle:nil];
    [navigationController pushViewController:viewController animated:NO];
    [viewController release];
    [window addSubview:navigationController.view];
    [window makeKeyAndVisible];
}

Über FirstViewController erstreckt UIViewController, in IB Sie die Ansicht dann setzen Datei Besitzer Klasse Ihrer Klasse erstellen (zum Beispiel hier FirstViewController) und verbinden Sie den Eigentümer nach Ansicht der Datei der Ansicht der UIView.

Ich glaube, Sie suchen nach etwas, wie diese. Sie würden „was auch immer“ mit dem Namen von Ihnen zweiter nib-Datei ersetzen.

newNavController = [[UINavigationController alloc] initWithNibName:@"whatever" bundle:[NSBundle mainBundle]];

Zuerst sieht es aus wie Sie Ihre UITabBarItems haben unter der Navigation-Controller statt direkt unter dem UITabBarController. Das kann ein Teil des Problems sein.

Zweitens, wenn Sie eine UITabBarController in IB hinzufügen und und in der Liste der Top-Level-Objekte (Ihr erster Screenshot) auf das Symbol klicken, wird der Attribute-Inspektor können Sie die Art der View-Controller für jede der Registerkarten ändern . Mit dieser kann man sie alle zur Navigation Controller ändern, wenn Sie es wünschen. Auch da Sie benutzerdefinierte Ansichten und View-Controller von anderen Nibs laden wollte, wenn man sich die „View Controller“ am unteren Rand des Attribute-Inspektor sehen, können Sie eine Feder aus dem Projekt wählen Sie die Ansicht aus zu laden. betreffende Spitze der „Datei Besitzer“ auf Ihre UINavigationController Unterklasse Angenommen, es sollte alles funktionieren.

All dies ohne eine große Menge Arbeit der Codierung, auch nicht. Lassen Sie uns wissen, wenn Sie Screenshots für mögen, was ich rede, falls über Sie diese Tafeln nicht finden können.

fand ich die gleichen warning.I alle View-Controller in separaten Dateien xib gehalten haben. Ich losgeworden von ihm weg von .nib Namen zu entfernen und es leer zu halten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top