ios - develop - xcode tutorial




Loaded Nib aber die 'view' outlet wurde nicht gesetzt (17)

Ich habe meinem Projekt eine neue Nib-Datei hinzugefügt und versucht, sie zu laden.

Wenn ich jedoch auf das Symbolleistensymbol NSInternalInconsistencyException , das mich zu der von mir erstellten Ansicht bringen soll, NSInternalInconsistencyException ich eine NSInternalInconsistencyException mit der folgenden Meldung:

Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInternalInconsistencyException', Grund: '- [UIViewController _loadViewFromNibNamed: bundle:] hat die Feder "..." geladen, aber der View-Ausgang wurde nicht gesetzt.'

Also habe ich meine Nib-Datei geöffnet, und ich sehe für die Ansicht, dass keine Referenz-Outlets gesetzt sind. Ich versuche jedoch, den Kreis für "neues Referenz-Outlet" auf den Eigentümer der Datei zu klicken und zu ziehen, aber es lässt mich nicht ... was muss ich tun, damit meine Ansicht angezeigt wird?


Ich hatte das gleiche Problem, während versehentlich xib Referenz gelöscht und fügte es wieder hinzu. Ich habe gerade behoben, indem Sie die Verbindung zwischen Files Besitzer und der Ansicht.Achten Sie auch darauf, dass die benutzerdefinierte Klasse Ihrer FilesOwner ist Ihre erwartete ViewController.


Die Identitätsansicht - Klassenidentität wurde nicht festgelegt. Nachdem das Problem in der entsprechenden Klasse festgelegt wurde, wurde das Problem behoben.


Für jeden, der eine xib-Methode verwendet, um eine UIView zu erstellen und dieses Problem zu haben, werden Sie bemerken, dass Sie die "view" -Ausgabe nicht im Verbindungsinspektormenü haben. Wenn Sie jedoch die benutzerdefinierte Klasse Dateibesitzer auf einen UIViewController setzen, sehen Sie die "view" -Ausgabe, mit der Sie CMND einfach eine Steckdose mit der CustomView verbinden können.


Für mich waren alle hier angegebenen Dinge https://.com/a/6395750/939501 zwar wahr, aber trotzdem war es Wurffehler, Grund war, dass ich eine View-Klasse mit dem Namen ABCView erstellte und diese dann später löschte, als ich einen View-Controller hinzufügte ABCViewController so dass es sich irgendwie auf alte ABCView im neuen View-Controller bezog, musste ich den ABCViewController löschen und einen neuen mit anderem Namen hinzufügen, der mein Problem löste.

Vielen Dank


Habe gerade den gleichen Fehler in meinem Projekt, aber anderen Grund. In meinem Fall hatte ich ein IBOutlet-Setup mit dem Namen "View" in meiner benutzerdefinierten UITableViewController-Klasse. Ich wusste, dass "Ansicht" etwas Besonderes war, weil es ein Mitglied der Basisklasse ist, aber ich glaube nicht, dass View (anderer Fall) auch ein Problem sein würde. Ich denke, einige Bereiche von Cocoa unterscheiden nicht zwischen Groß- und Kleinschreibung, und wahrscheinlich ist das Laden eines Xib einer dieser Bereiche. Also habe ich es einfach in DefaultView umbenannt und alles ist jetzt gut.


Habe gerade mehr als eine Stunde damit verbracht, herauszufinden, warum meine View-Eigenschaft nicht in meinem View-Controller gesetzt ist, als ich sie von der Nib initiierte. Denken Sie daran, "[super initWithNibName ...]" im InitWithNibName Ihres View-Controllers aufzurufen.


Ich habe das gerade in meinem behoben. Großes Projekt, zwei Dateien. Einer war "ReallyLargeNameView" und ein anderer war "ReallyLargeNameViewController"

Basierend auf der zweiten Antwort wählte ich, dass ich meinen Build säubern sollte. Nada, aber ich war immer noch verdächtig von XCode (da ich zwei identische Klassen habe, sollte man sie abstrahieren, aber eh ...) Also arbeitet man, man nicht. Die Namen der Besitzer der Dateien sind so weit wie kopieren und einfügen, Steckdosen wieder gehängt, xCode neu gestartet, immer noch nichts.

Also lösche ich die ähnlich benannte Klasse (was eine Ansicht ist). Bald wurde der neue Fehler "Steckdose im Inneren nicht angeschlossen" buchstäblich "WebView nicht Schlüsselwert" bla ... im Grunde sagen "Visual Studio ist besser". Wie auch immer ... ich lösche die kleinere benannte Datei, und bam, es funktioniert.

XCode wird von ähnlich benannten Dateien verwirrt. Und das Projekt ist groß genug, um ein bisschen neu booten zu müssen, das könnte ein Teil davon sein.

Ich wünschte, ich hätte eine technischere Antwort als "XCode ist verwirrt", aber gut, xCode wird an dieser Stelle sehr verwirrt. Nicht so konfus wie ich einem kleinen Kind helfen würde. Es funktioniert jetzt, :) sollte anderen helfen, wenn das oben genannte nichts repariert.

Denken Sie immer daran, Ihre Builds zu säubern (indem Sie auch den Simulator löschen)


Ich hatte auch das selbe Problem und mein Problem war, dass ich eine andere Lokalisierung (Englisch) zur ViewControllers-Nib hinzufügte, so dass meine App mit der Lokalisierung German die Nib mit der Lokalisierung Englisch nicht finden konnte !! Hoffe das hilft jedem!


Ich hatte das gleiche Problem, aber eine andere Lösung wurde gefordert. Das Problem in diesem Fall war die Klasse des File Owner wurde nicht mit Xib-Datei verbunden.


Ich hatte das gleiche Problem, aber eine etwas andere Lösung war gefragt. Das Problem in diesem Fall war die Klasse des Dateieigners und nicht die Klasse der Ansicht. Um dies einzustellen, musste ich auf das "rückwärts spielen" -Symbol in der unteren linken Ecke des Interface Builder-Fensters klicken, und dann erschienen Optionen, die die Eigenschaften des Dateieigners, des ersten Responders und der Ansicht isolierten. Durch Klicken auf die erste (eine große transparente Box) konnte ich dann die benutzerdefinierte Klasse wie oben vorgeschlagen einstellen.


Ich kann das Problem im Allgemeinen beheben, indem ich die Verbindung zwischen dem Eigentümer der Datei und der Ansicht wiederherstelle. Ziehen Sie den Mauszeiger vom Besitzer der Datei zu Ihrer Ansicht (in IB) und wählen Sie die Ansicht aus dem Popup-Menü.


Ich würde gerne Stephen J. hinterfragen. Manchmal wird X-Code nur verwirrt. Ich hatte gerade eine Erfahrung, bei der ich viel mit der Benutzeroberfläche experimentiert hatte, und hatte Steckdosen ziemlich oft hinzugefügt und gelöscht. Die Steckdosen würden einfach nicht mehr verkabeln. Ich habe nie einen bestimmten Grund herausgefunden (ich hatte alle oben genannten Lösungen ausprobiert), und ich musste nur die NIB löschen und sie von Grund auf neu erstellen, und tatsächlich musste sie einen anderen Namen für die NIB verwenden, bevor sie funktionierte. (XCode 4.6.1) Ein paar Stunden vergeudet.


In meinem Fall wurde der designierte Initialisierer - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil in der ViewController-Klasse implementiert, so dass selbst dann, wenn ich einen anderen Initialisierer zum Initialisieren des Objekts aufruft, der designierte Initialisierer heißen .

Also, um dieses Problem zu beheben, überprüfen Sie, ob der - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil auch eine ordnungsgemäße Möglichkeit ist.


In meinem Fall wurde die Ansicht nicht in xib angezeigt. In xib war die View size = none (4. Tab rechts). Ich setze die Größe auf Freeform und lade xCode neu. View wurde angerufen und ich habe den richtigen Link zu View gesetzt.


Sind Sie sicher, dass Sie der Eigenschaft "view" von yourViewController eine UIView (oder Unterklasse) zugewiesen haben?

Klicken Sie mit der rechten Maustaste auf "File Owner" im linken Bereich der xib für yourViewController und vergewissern Sie sich, dass die "view" -Ausgabe gesetzt ist. Wenn nicht, setze es auf eine Ansicht!

Das wird das Problem definitiv beheben


Wählen Sie den Eigentümer der Dateien und öffnen Sie den Identity Inspector geben Sie den Namen der Klasse, die es entspricht. Wenn keine der oben genannten Methoden funktioniert und Sie immer noch den View-Ausgang nicht sehen können, geben Sie dem Besitzer der Datei eine neue Referenz-Outlet-Verbindung, dann können Sie den View-Ausgang sehen. Klicken Sie auf den View Outlet, um eine Verbindung zwischen dem View Outlet und dem Eigentümer der Datei herzustellen. Führen Sie die Anwendung aus, das funktioniert einwandfrei.


für mich ist es passiert, wann

  • Ich habe eine ViewController-Klasse (.mm / h), die der Nib-Datei zugeordnet ist.
  • UIView von diesem ViewController muss in der anderen Ansicht als Unteransicht geladen werden,

  • Wir werden so etwas nennen

    -(void)initCheckView{
    
       CheckView *pCheckViewCtrl = [CheckView instance];
    
       pCheckView = [pCheckViewCtrl view];
    
       [[self view]addSubview:pCheckView];
    
       [pCheckViewCtrl performCheck];        
    
    }
    

Woher

+(CheckView *)instance{
    static CheckView *pCheckView = nil;
    static dispatch_once_t checkToken;

    dispatch_once(&checkToken, ^{
        pCheckView = [[CheckView alloc]initWithNibName:@"CheckView" bundle:nil];
        if ( pCheckView){
            [pCheckView initLocal];
            **[pCheckView loadView];**
        }
    });

    return pCheckView;

}

Hier fehlte loadView, das Hinzufügen dieser Zeile löste mein Problem.





xib