Erläuterung: Ich habe einen Viewcontroller, der eine Navigationsleiste und eine UIWebView enthält. Die Webansicht wird in der .m-Datei als Vollbild angezeigt. Auf dem Viewcontroller ist die Navigationsleiste nach vorne angeordnet.
Was passiert: Wenn ich die App starte, ist nur das Webview (Vollbild) sichtbar, aber die Navigationsleiste ist nicht da.
Was passieren soll: Das ist selbsterklärend, aber die Navigationsleiste soll oben mit einem Webview darunter liegen.
Wie es aussieht
.m-Datei
%Vor%.h-Datei
%Vor%Problem / Frage: Die Navigationsleiste ist nicht sichtbar, wie kann dies behoben werden, so dass sowohl die Webansicht als auch die Navigationsleiste sichtbar sind?
Also kann ich das, was Sie gerade erleben, replizieren, und ich habe zwei Projekte abgeschlossen, damit Sie sie sehen können. Hier sind einige Screenshots, aber zuerst ist der Code, den ich benutze, dein Code auf diese Weise:
Erstellen Sie eine einzelne Anwendung
Ersetze die Ansicht, die mit der geladenen Ansicht geladen wurde
Hier sind die Ergebnisse der Verwendung Ihres Codes mit einer Navigationsleiste mit Ihrem Code und einer Navigationsleiste wie Sie gesagt haben:
Sie können dieses Projekt hier herunterladen: Ссылка
Erweitertes Layout (das gleiche Ergebnis wie bei Ihnen):
Storyboard-Layout:
Also, angesichts der obigen Screenshots und der Navigationsleiste, die hinter der Web-Ansicht platziert wird, liegt das zum Teil an der Tatsache, dass ich keinen Navigationscontroller habe, der meinen View-Controller so die Platzierung einer Navigationsleiste hält ist völlig nutzlos und erscheint nicht auf dem Bildschirm. Außerdem würde die Navigationsleiste nicht einmal etwas tun, wenn sie angezeigt würde, da in der Hierarchie kein Navigationscontroller vorhanden ist.
Nun, angesichts dieses ersten Beispiels, hier ist eine Korrektur.
Das ist das selbe wie das Layout wie oben, aber der Unterschied ist, dass ich den View-Controller in einem Navigations-Controller verwurzelt habe. Alles bleibt gleich und tatsächlich habe ich dem Storyboard nicht einmal eine Navigationsleiste hinzugefügt da dies automatisch durch das Rooten eines View-Controllers eines Navigations-Controllers erzeugt wird.
Sie können dieses Projekt herunterladen: Ссылка
Erweitertes Layout:
Storyboard-Layout:
Also, der Unterschied hier ist, dass ich den View-Controller in einem Navigations-Controller rooted.
Fazit:
Es kann sehr gut der Fall sein, dass das Problem, das Sie erleben, völlig anders ist als das Problem, das ich oben erklärt habe, aber mit Ihrem Code konnte ich das gleiche Ergebnis erzielen wie in meinem ersten Beispiel. In meinem zweiten Beispiel konnte ich eine Webansicht verwenden, genau so, wie Sie es mit Ihrem Code zeigen, und ich habe tatsächlich eine Navigationsleiste für dieses zweite Beispiel. Das einzige, was ich im zweiten Beispiel geändert habe, war, den View-Controller in einem Navigations-Controller zu rooten.
Erstellen Sie die UIWebview
-Erstellung in Storyboard
: Layout, Einschränkungen, Navigationsleiste von Navigation Controller, Titel, verweisende Verkaufsstellen, Delegierte, alles. Jedes Setup-Element, das auf Ressourcenebene implementiert wird, entfernt Codezeilen, potenzielle Fehler, Tests, Kopfschmerzen und Frustrationen.
Ganze Klasse
%Vor%Die Lösung wird sprachunabhängig und funktioniert in Swift & amp; Obj-C .
► Finden Sie diese Lösung auf GitHub und weiteren Details auf Schnelle Rezepte .
Ist die ViewController2
tatsächlich in UINavigationController
oder wurde die UINavigationBar
in der Ansicht in Storyboard
platziert?
Wenn Sie gerade den UINavigationBar
in die Ansicht in Storyboard
gezogen haben und dann in der viewDidLoad
-Methode den UIWebView
(mit einem Rahmen des vollständigen UIView
des ViewController2
), dann sehen Sie natürlich nicht UINavigationBar
, weil es von UIWebView
abgedeckt wird.
Wenn die ViewController2
tatsächlich in UINavigationController
ist, brauche ich mehr Details, um das Problem zu finden.
BEARBEITEN: Ein (möglicherweise) nicht verwandtes Problem:
In Ihrer Storyboard
haben Sie bereits eine UIWebView
platziert, die vermutlich mit der IBOutlet
von webView2
verbunden ist.
Warum stellst du in deinem UIWebView
code% code% ein? Sie haben bereits einen und können ihn einfach referenzieren, anstatt scheinbar ohne Grund einen neuen zu erstellen.
Kurz und einfach:
Für diejenigen von Ihnen, für die nichts von dem oben genannten funktioniert, habe ich gerade ein anderes Problem gefunden, das dazu führen kann, dass die Navigationsleiste nicht angezeigt wird. Wenn Sie bereits einen Navigationscontroller hinzugefügt haben und die Navigationsleiste nicht angezeigt wird, könnte dies für Sie gelten, wenn Sie eine ähnliche Einstellung für mich haben. Ich habe eine Login-VC, die dann über den Navigationscontroller mit einem News-Feed verknüpft wird. Wenn Sie den News-Feed im Attribut-Inspector auf Initial View-Controller setzen, wird die Navigationsleiste nicht angezeigt. Wenn Sie jedoch den News-Feed über die Anmeldeseite (d. H. Login) erreichen und Sie daher vom Navigationscontroller dorthin weitergeleitet werden, wird die Navigationsleiste angezeigt. Wenn Sie möchten, dass die Navigationsleiste angezeigt wird, verwenden Sie nicht "Initial View Controller".
Tags und Links objective-c ios uiwebview uinavigationbar