2012-04-01 21 views
0

Ich habe xcode Refactor verwendet, um den Namen eines ViewController zu ändern. Ich habe den Controller-Namen in der .h-Datei markiert und dann Bearbeiten> Umgestalten> Umbenennen verwendet. Alles wurde korrekt geändert, einschließlich des Namens der .xib-Datei. Allerdings, wenn ich gehe, um die Spitze mit initWithNibName zu laden: der neue Name wird nicht erkannt. Ich muss immer noch den String-Wert des alten Namens des Controllers angeben.NIB-Name unverändert mit xcode Refactor

Ich habe versucht, den alten Namen in der .xib-Datei mit einem XML-Editor zu suchen, in der Hoffnung, es dort zu ändern. Ohne Glück.

Weiß jemand, wie ich den Nib-Namen ändern kann, damit es mit dem neuen Dateinamen der .xib-Datei übereinstimmt?

[Ich bin mit Xcode 4.2]

+0

Haben Sie versucht, Ihr Projekt zu reinigen? – Sven

Antwort

1

XCode keine Anrufe zu initWithNibName ändern, die eine Zeichenkette verwenden (zB initWithNibName:@"FooViewController withBundle:nil]). Dies ist einer der Gründe, warum ich dazu tendiere, so zu codieren: initWithNibName:NSStringFromClass([FooViewController class]) withBundle:nil Also schauen Sie in Ihrem Code nach irgendwelchen Aufrufen, die literale Zeichenfolgen verwenden.

SCHNELLBEARBEITUNG: Aber es kommt mir vor, dass Sie es möglicherweise bereits manuell geändert haben. In diesem Fall deinstallieren und säubern Sie das Projekt schnell.

+0

Der manuelle Aufruf von 'NSStringFromClass' wird nicht benötigt. Wenn Sie die Nib mit dem gleichen Namen wie Ihre Klasse laden möchten, können Sie 'nil' für den Nib-Namen verwenden. – Sven

+0

Ja, Sie könnten dies auch tun, aber gelegentlich funktioniert es nicht richtig für mich ... Ich weiß nicht warum>< – borrrden

+0

Ihre schnelle Bearbeitung kommt zur Wurzel meines Problems. Wenn ich das String-Literal in den neuen Nib-Namen ändere, erhalte ich einen Fehler in initWithName. Ich habe neu installiert und ohne Erfolg gereinigt. Zeigt an, dass irgendwo noch der alte Name für die Feder verwendet wird. Wo dieser alte Name gespeichert ist, ist ein Geheimnis. Allerdings habe ich Svens Ratschlag genommen und nil für den Nib-Namen in initWithNibName verwendet: und es funktioniert gut. Ich wusste nicht, dass du das kannst! Der alte Name ist also immer noch irgendwo vergraben, aber ich werde mich nicht darum kümmern, da er nicht in meinem Code angezeigt wird. – lp1756