Warnung "Einfacher Stil wird in einem Navigationselement nicht unterstützt" mit meinem benutzerdefinierten Balkenschaltflächenelement

87

Ich ziehe eine runde rechte Taste an die Position des rechten Balkenschaltflächenelements und setze ein Bild auf die runde rechte Taste. Alles funktioniert gut, mit Ausnahme der Warnung "Einfacher Stil, der in einem Navigationselement nicht unterstützt wird". Selbst wenn ich den Stil des Balkenschaltflächenelements auf "Umrandet" wähle, ist die Warnung immer noch vorhanden. Was ist los mit Xcode 4.2? Danke im Voraus!

Ps. Ich habe viele Balkenschaltflächenelemente mit der runden Rechteckschaltfläche angepasst. Manchmal zeigt Xcode 4.2 nur eine Warnung auf einem Balkenschaltflächenelement an, manchmal werden Warnungen auf allen Balkenschaltflächenelementen angezeigt.

lu Yuan
quelle
1
Ich schrieb einen Blog-Beitrag darüber: blog.mosheberman.com/…
Moshe
Fügen Sie keine Schaltflächen hinzu, sondern Elemente mit Balkentasten. Das war mein Fehler.
Daniel Springer

Antworten:

134

Ich konnte diese Fehler beseitigen, indem ich die Storyboard-Dateien manuell bearbeitete und den fehlerhaften Eintrag style = "plain" für Elemente der Leistenschaltfläche im <navigationItem>Element fand.

Gewechselt von:

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

Zu:

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

Dies löschte die Warnungen ... richtig oder falsch.

Dies kann ein erstaunlicher Hack sein, und die größere Sorge ist, dass ich ihn nicht verursacht oder die unsichtbaren Balkenschaltflächenelemente aus dem Gesamtdokument entfernt habe. Dies geschah, nachdem alle Elemente einzeln durchgesehen wurden und festgestellt wurde, dass einige Navigationsleisten leer waren (ohne untergeordnete Elemente) und wahrscheinlich mit der großen Menge an Vererbung durch Kopieren und Einfügen (cmd + c | v) und ohne Verwendung von Duplikaten (cmd + d) auftraten. um die Schnittstelle zu erstellen. Obwohl die Quellursache nicht durch die Ursache verursacht wurde, war das Symptom, dass die Balkenelemente in der zu behebenden Dokument- "Gliederungsansicht" nicht angezeigt wurden. Das Verhalten von Interface Builder erscheint mir manchmal nuanciert, und ein leerer Container, in dem sich in einer Gliederungsansicht etwas befinden sollte, ist ein Geruch. Nun ist es für mich jetzt. Manchmal werden die seltsamsten Probleme behoben, indem der fehlerhafte Knoten gelöscht und neu erstellt wird.

WARNUNG: Sichern Sie Ihre Storyboards, bevor Sie dies versuchen ... Die 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 ein paar Mal auf die harte Tour gelernt, aber die sorgfältige Quellcodeverwaltung ersparte mir Kopfschmerzen.

BEARBEITEN: Setzen Sie Klammern in Codeblöcke

Hunter-Orionnoir
quelle
24
Wählen Sie das Barbutton-Element im Interface Builder aus, öffnen Sie das Attributfenster auf der rechten Seite und ändern Sie den Stil des Balkenschaltflächenelements in "Rand", um den gleichen Unterschied auf die Storyboard-Datei anzuwenden. Das sollte also sicher sein.
Maische
Vielen Dank für diesen Rat @mash, die Art und Weise, wie ich es tat, war schrecklich mit potenziellen Schmerzen und Leiden behaftet.
Hunter-Orionnoir
@ SpaceDog2 Danke für das Heads Up. Ich habe noch kein Upgrade durchgeführt, daher kann ich dem keine Bestätigung hinzufügen. Ich würde mit dieser Methode sowieso sehr vorsichtig sein. Ich weiß, dass es vielen Leuten bisher geholfen hat. Mit der Zeit werden wir sehen, ob es aufhört zu helfen.
Hunter-Orionnoir
5
Diese Lösung hat in Xcode 7.1 perfekt für mich funktioniert. Anstatt den Quellcode direkt zu bearbeiten, können Sie dies auch im Storyboard selbst ändern (indem Sie den Stil von "Einfach" in "Rand" ändern). Dies hat genau das gleiche Ergebnis wie das manuelle Löschen style="plain"aus dem Storyboard-Quellcode. Für mich scheint dieser Vorschlag von Hunter also legitim zu sein.
Erik van der Neut
Schauen Sie sich auch die Antwort von dstudeba an, ich wusste nicht einmal, was er beschrieb, war möglich. könnte jedem etwas Schmerz ersparen und unter der manuellen Bearbeitung der Datei leiden. Die Quellcodeverwaltung liegt bei Ihren Freunden. Seien Sie sicher, alle. ;)
Hunter-Orionnoir
31

Wenn Sie auf die Warnung klicken und nicht zum betreffenden Navigationselement wechseln, gehen Sie wie folgt vor. (visuelle Darstellung von Jägers Antwort mit sicherer Methode aus den hinzugefügten Kommentaren)

Klicken Sie im Dateibrowser mit der rechten Maustaste auf das Storyboard und wählen Sie Open As Source Code

Geben Sie hier die Bildbeschreibung ein

Suchen Sie auf der Quellcodepage nach "normal" und suchen Sie diejenige, die an ein Navigationselement angehängt ist.

Geben Sie hier die Bildbeschreibung ein

Um den Namen der Ansicht zu erhalten, geben Sie "Szene" in die Suchleiste ein und klicken Sie auf den hinteren Suchpfeil, um nach der ersten Instanz in diesem Tag über dem zu suchennavigationItem

Geben Sie hier die Bildbeschreibung ein

Hier ist der Name Ihrer Szene. Sie können jetzt Ihre Storyboard-Ansicht Interface Builder - Storyboardmit der oben beschriebenen Rechtsklick-Methode wieder ändern und dann die Szene im Szenenmenü und das darin enthaltene Balkenelement auswählen.

Geben Sie hier die Bildbeschreibung ein

Gehen Sie zum Attributinspektor und ändern Sie den Stil von PlainbisBordered

Geben Sie hier die Bildbeschreibung ein

dstudeba
quelle
1
Cool. Ich werde es auf jeden Fall versuchen, wenn dies das nächste Mal auftritt.
Hunter-Orionnoir
Das ist Arbeit für mich!
Trần Hữu Hiền
13

Ich habe die Warnung zu Plain Style gestoppt, indem ich mich in der Dokumentübersicht umgesehen habe. Das zeigte mein Navigationselement und innerhalb dieser 2 Balken-Schaltflächenelemente und innerhalb jeder dieser Schaltflächen. Die beleidigende Einstellung befand sich auf dem Balkenschaltflächenelement. In seinem Attributinspektor habe ich den Stil von "Einfach" in "Fertig" geändert, und die Warnung wurde gelöscht. Hinweis: Ich verwende XCode 5.

MarkAurelius
quelle
8

Wenn Sie ein Storyboard verwenden, klicken Sie auf die Warnung und Sie sollten zum fehlerhaften Navigationselement gelangen (ich hatte zwei für das Problem, einer hat mich dorthin gebracht, der andere nicht) - ändern Sie den Stil und bereinigen Sie das Projekt.

Bar Button Style auf Plain gesetzt

Recycelter Stahl
quelle
In diesem obigen Problem hat es mich eigentlich nirgendwohin gebracht. Ich denke, das ist der Knackpunkt dieser speziellen Ausgabe, das Element fehlte insgesamt im Navigator, aber die Antwort von dstudeba hat einen interessanten Ansatz. Seien Sie neugierig, ob das Öffnen des Storyboards den Menschen hilft.
Hunter-Orionnoir
Dies ist die am besten geeignete Antwort. Ich habe den Stil in Bordered geändert.
Andrej
6

backBarButtonItem leftBarButtonItemund rightBarButtonItemsind UINavigationItemObjekte. Es gibt keine styleEigenschaft in, UINavigationItemdaher ist dies der Grund für die Warnung. Sie sollten die barButtons programmgesteuert einstellen:

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 Abschnitt "Anpassen des Erscheinungsbilds" der UIBarButtonItem-Referenz .

Matte
quelle
3
Ich habe ein geerbtes Projekt mit vielen View Controllern und Schaltflächen. Ich kann XCode nicht dazu überreden, mir zu sagen, welche Taste die Warnung verursacht. Irgendwelche Hinweise? Vielen Dank!
Olie
Führen Sie möglicherweise Ihre View-Controller durch und "finden" Sie UIBarButtonItenStyle. Dort ist die Eigenschaft normalerweise falsch eingestellt
TimWhiting
1

Versuchen Sie in der Navigationsleiste, UIBarButtonItem anstelle der Schaltfläche Round rect zu verwenden, und legen Sie ein Bild dafür fest.

iOSDev
quelle
Aber der Stil von UIBarButtonItem ist nicht das, was ich brauche.
Lu Yuan
1

In meinem Fall war es ein Bild eines Rückpfeils, der auf "Plain" gesetzt war.

Die Fehlermeldung bezieht sich anscheinend auf alle Elemente in der Navigationsleiste.

user462990
quelle
0

Wenn Sie sicher sind, dass alle Balkenschaltflächen im Storyboard alles andere als einfach sind, stellen Sie sicher, dass Sie ein Git-Commit durchführen und abgeleitete Daten löschen. Ich habe ewig versucht herauszufinden, warum sich das Problem nicht selbst behoben hat, und das Löschen des abgeleiteten Datenordners hat es für mich behoben.

Sethmr
quelle