2015-08-22 13 views
5

Ich habe drei View-Controller, die dieselbe Navigationsleiste haben sollen, aber ich habe keine Möglichkeit, die Navigationsleiste zwischen diesen drei Ansichten zu "teilen". Gibt es eine effizientere Möglichkeit, die Nav-Controller mit den View-Controllern zu verbinden, so dass ich nicht über drei verschiedene Navigations-Controller verfüge, obwohl die Navigations-Controller genau gleich sind?Die beste Möglichkeit, Navigationsleiste über mehrere Ansichten hinweg zu teilen?

Zusätzlich habe ich einen Tab-Controller, wenn das einen Unterschied macht.

Bild zu klären:

enter image description here

+0

mögliche Duplikate von [Wie zeige ich dieselbe Navigationsleiste in vielen Ansichten an?] (Http://stackoverflow.com/questions/21741731/how-do-i-display-the-same-navigation-bar-threuchout (viele Ansichten) – Ch0k0l8

Antwort

3

Wie Ch0k0I8 erwähnt, UIAppearance ist ein guter Weg, um ein gemeinsames UI Thema in der App zu setzen.

Wenn Sie die gleiche Funktionalität zwischen Navigationssteuerungen suchen, sollten Sie die Unterklasse UINavigationController ableiten und dort die allgemeine Funktionalität implementieren. Dann können Sie Ihren benutzerdefinierten Navigationscontroller im Storyboard oder in Code an den 3 gewünschten Orten verwenden. Um Ihre benutzerdefinierte Unterklasse in das Storyboard zu verschieben, ziehen Sie eine UINavigationController auf das Storyboard, wie Sie es normalerweise tun würden, und ändern Sie dann die Klasse auf der Registerkarte "Dienstprogramme" in Ihre benutzerdefinierte Navigationssteuerungsklasse. Hier ist, was eine benutzerdefinierte UINavigationController Unterklasse könnte wie folgt aussehen:

class CustomNavController: UINavigationController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // do whatever custom setup stuff you want here 
    } 

    // override other methods for different customizations 
} 
+0

Ich entschuldige mich für meine Noobishness (Ich bin ein Android-Programmierer auswendig), aber was meinst du mit "Unterklasse [ing]" der UINavController? Ich bin auch verwirrt, wie ich einen benutzerdefinierten Navigationsleiste Controller im Storyboard –

+1

meine Antwort aktualisieren kann. Wenn Sie ein Android-Programmierer sind, sollten Sie mit Unterklassen vertraut sein. Android- und iOS-Apps sind sehr ähnlich, und vieles davon basiert auf objektorientierter Programmierung. – keithbhunter

+0

Also muss ich grundsätzlich noch einen separaten Nav-Controller für jede Ansicht hinzufügen? –

2
+0

Sie können eine konsistente Benutzeroberfläche in Ihrer App mit dem UIApearance-Protokoll erstellen. Wenn es nicht dein Fall ist, dann ist es falsch. – Ch0k0l8

+1

Ich möchte die gleiche Funktionalität (d. H. Schaltflächen in der Navigationsleiste) neben der Farbe beibehalten; kann ich das mit UIAppearance machen? –

0

Sie ein Storyboard verwenden, und von dem, was Sie beschreiben, brauchen Sie nicht drei nav-Controller. Verbinden Sie stattdessen die drei UIViewControllers, indem Sie mit gedrückter Strg-Taste von einem zum nächsten ziehen, um ein Push-Segment zu erstellen. Verwenden Sie nicht den UIAppearance Proxy; Setzen Sie einfach das Aussehen der Leiste in der rootViewControllerviewDidLoad Methode Ihrer Navigationssteuerung anpassen.

+0

Muss ich trotzdem drei separate Navigationscontroller haben? –

+0

@JacobPlatin Definitiv nicht. Ich habe meine Antwort bearbeitet. Ein Nav-Controller steuert oder enthält einen Fluss durch die App, so dass jede enthaltene Szene in die nächste Szene übergeht. – NRitH

Verwandte Themen