2012-06-08 2 views
62

Ich ziehe eine Runde Rect Button an die Position der rechten Bar Button Item, und ein Bild auf die Round Rect Button. Alles funktioniert gut, mit Ausnahme der Warnung "Plain Style in einem Navigationselement nicht unterstützt". Selbst wenn ich den Stil des Bar Button Items auf "Bordered" wähle, ist die Warnung immer noch da. Was ist los mit Xcode 4.2? Danke im Voraus!"Plain Style nicht unterstützt in einem Navigationselement" Warnung mit meiner benutzerdefinierten Bar Schaltfläche Artikel

Ps. Ich habe viele Elemente der Stabschaltfläche mit der Schaltfläche "Runden Rect" angepasst, manchmal zeigt Xcode 4.2 nur eine Warnung für eine Stabschaltfläche an, manchmal werden Warnungen für alle Elemente der Stabschaltfläche angezeigt.

+1

Ich schrieb einen Blog-Post darüber: http://blog.mosheberman.com/fixing-plain-style-unsupported-in-a-navigation-item-in-xcode-7/ – Moshe

Antwort

101

Ich war in der Lage, diese Fehler zu entfernen, indem Sie manuell die Storyboard-Dateien bearbeiten und den anstößigen style = "plain" -Eintrag auf Elemente der Bar-Schaltfläche im <navigationItem>-Element finden.

von Geändert:

<barButtonItem key="rightBarButtonItem" style="plain" id="juB-DL-F9i"> 

An:

<barButtonItem key="rightBarButtonItem" id="juB-DL-F9i"> 

Damit waren die Warnungen ... richtig oder falsch.

Dies kann ein stupendous Hack sein und die größere Sorge ist, habe ich nicht Ursache verursacht, oder entfernen Sie die unsichtbare bar Schaltfläche Elemente aus dem Gesamtdokument. Nachdem alle Elemente nacheinander durchlaufen wurden und einige Navigationsleisten leer waren (ohne Kinder) und wahrscheinlich mit der großen Menge an Kopieren und Einfügen (cmd + c | v) Vererbung und nicht mit Duplikat (cmd + d) auftraten um die Schnittstelle zu bauen. Obwohl die Ursachenursache nicht von root verursacht wurde, war das Symptom, dass die Balkenelemente nicht in der "Gliederungsansicht" des Dokuments angezeigt wurden, um behoben zu werden. Das Interface Builder-Verhalten erscheint mir manchmal nuanciert und ein leerer Container, in dem etwas in einer Outline-Ansicht sein sollte, ist ein Geruch. Nun, es ist mir jetzt. Manchmal behebt das Löschen des problematischen Knotens und das erneute Erstellen die seltsamsten Probleme.

WARNUNG: Sichern Sie Ihre Storyboards, bevor Sie dies versuchen ... Versionskontrolle ist Ihr Freund ... Ich übernehme keine Verantwortung, wenn Ihr Storyboard vollständig abgespritzt ist und nicht kompiliert wird. Alles, was du bekommst, ist ein "Ich habe es dir gesagt!" Ich habe den harten Weg ein paar Mal gelernt, aber sorgfältige Quellenkontrolle hat mir Kopfschmerzen erspart.

EDIT: put Klammern in Codeblöcke

+13

falsch gesetzt. Wählen Sie das barbuttonitem im Interface Builder aus, öffnen Sie das Attributfeld rechts und ändern Sie den Stil des Balkenschaltfeldelements in "Bordered", um das gleiche diff auf die Storyboard-Datei anzuwenden. also sollte das sicher sein. – mash

+0

Danke für diesen Rat @mash, die Art, wie ich es getan habe, war schrecklich mit potenziellen Schmerzen und Leiden verursacht. –

+0

Diese Lösung funktioniert nicht für Xcode 7.0.1 – SpaceDog

1

In der Navigationsleiste versuchen, UIBarButtonItem anstelle von Runde Rect-Taste verwenden und ein Bild dafür festlegen.

+0

aber es ist der Stil von UIBarButtonItem ist nicht was ich brauche. –

5

backBarButtonItemleftBarButtonItem und rightBarButtonItem sind UINavigationItem Objekte. Es gibt keine style Eigenschaft in UINavigationItem, deshalb ist das der Grund der Warnung. Sie sollten die barButtons gesetzt programmatisch:

iOS 4:

UIButton *bt=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
 [bt setFrame:YourFrame]; 
//[bt setImage:[UIImage imageNamed:@"backBT"] forState:UIControlStateNormal]; 
 [bt addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside]; 
 UIBarButtonItem *leftButton=[[UIBarButtonItem alloc] initWithCustomView:bt]; 
 self.navigationItem.leftBarButtonItem=leftButton; 

Für iOS 5+:

Lesen Sie den "Anpassen Erscheinungsbild" von UIBarButtonItem reference.

+3

Ich habe ein geerbtes Projekt mit vielen View-Controllern und Schaltflächen. Ich kann XCode nicht dazu verleiten, mir zu sagen, welcher Knopf die Warnung auslöst. Irgendwelche Hinweise? Vielen Dank! – Olie

+0

Vielleicht durchlaufen Sie Ihre View-Controller und "finden" UIBarButtonItenStyle. Dort wird normalerweise die Eigenschaft – TimWhiting

13

Ich habe die Warnung über Plain Style gestoppt, indem ich in der Document Outline herumstocherte. Das zeigte mein Navigation Item, und innerhalb dieser 2 Bar Button Items, und in jedem davon einen Button. Die beleidigende Einstellung war auf dem Bar Button Item. In seinem Attributinspektor habe ich Style von Plain nach Done geändert und die Warnung ist weg. Hinweis: Ich verwende XCode 5.

6

Wenn Sie Storyboard verwenden dann die Warnung klicken und es sollten Sie auf die säumige Navigationspunkt nehmen (ich hatte zwei für das Problem, mich ein dort nahm das tat andere nicht) - ändern Sie den Stil und reinigen Sie das Projekt.

Bar Button Style set to plain

+0

In diesem oben genannten Problem hat mich nicht wirklich irgendwo hin gebracht. Ich denke, das ist der Knackpunkt dieses speziellen Problems, der Gegenstand fehlte dem Navigator insgesamt, aber dstudebas Antwort hat einen interessanten Ansatz, sei neugierig, wenn das Öffnen des Storyboards den Menschen auf andere Weise hilft. –

+0

Dies ist die am besten geeignete Antwort. Ich habe den Stil in "Bordered" geändert. – Andrej

20

Falls Sie klicken auf die Warnung und Sie gehen nicht auf die säumige Navigationspunkt die folgenden Schritte aus. (Visuelle Darstellung des Jägers Antwort mit sichererer Methode aus den Kommentaren hinzugefügt)

im Datei-Browser klicken Sie rechts auf dem Storyboard und wählen Sie Open As Source Code

enter image description here

Im Quellcode Seite Suche nach „plain“, und finde den an ein Navigationselement angehängten.

enter image description here

Um den Namen der Ansicht, setzen „Szene“ in der Suchleiste und klicken Sie auf den Zurück Pfeil bekommen für die erste Instanz an diesem Tag oben die navigationItem

enter image description here zu suchen

Hier ist der Name Ihrer Szene, Sie können jetzt Ihre Storyboard-Ansicht mit der oben beschriebenen Rechtsklick-Methode zurück auf Interface Builder - Storyboard ändern und dann die Szene im Szenenmenü und die Balkenanzeige auswählen Ich drinnen.

enter image description here

Zum Kontrolleur Attribute und das Format aus Plain zu Bordered

enter image description here

+0

Kühl. Ich werde es auf jeden Fall beim nächsten Mal versuchen. –

1

In meinem Fall ändern, es war Pfeil ein Bild einer Rückseite, die auf „Plain“ gesetzt wurde .

Die Fehlermeldung bezieht sich auf alle Elemente in der Navigationsleiste.

0

Nachdem Sie sicher sind, dass alle Balkenschaltflächen im Storyboard auf alles andere als einfach eingestellt sind, stellen Sie sicher, dass Sie ein Git-Commit ausführen und abgeleitete Daten löschen. Ich verbrachte ewig damit herauszufinden, warum das Problem sich nicht selbst beheben konnte, und löschte den abgeleiteten Datenordner für mich.

Verwandte Themen