Der Versuch, einen Ansichtscontroller aus dem Storyboard zu initialisieren

8

Ich habe einen View-Controller, den ich im Haupt-Storyboard platziert habe, aber wenn ich versuche, den View-Controller zu initialisieren und zu laden, stürzt meine App ab. Die Xcode-Version, die ich benutze, sagt mir nicht wirklich die Fehler, die ich richtig erhalte, aber ich habe gesehen, dass es mir ein Sigabrt-Signal gab. Ich weiß nicht, warum es nicht funktioniert.

%Vor%

So habe ich es genannt. Alle Namen, die ich benutzt habe, sind korrekt, aber ich verstehe immer noch nicht, warum es abstürzt.

    
Michael Nana 26.09.2013, 00:31
quelle

3 Antworten

6

Setzen Sie einen Haltepunkt in der letzten Zeile, um sicherzustellen, dass VC (und auch Storyboard) nicht Null sind.

presentModalViewController stürzt ab, wenn das Argument "viewController" den Wert nil hat.

Wenn beide Werte null sind, ist der Name Ihres Storyboards wahrscheinlich falsch (weniger wahrscheinlich).

Wenn nur vc gleich Null ist, ist die Kennung falsch (entweder im Code oder im Storyboard). Stellen Sie sicher, dass die Storyboard-ID des VC (wie im Screenshot eingekreist) mit Ihrer Beschreibung übereinstimmt. Es ist üblich, keinen Klassennamen dafür zu wählen (da Sie in Ihren Storyboards möglicherweise mehr als eine Instanz einer bestimmten Klasse haben).

Die Storyboard-ID unterscheidet zwischen Groß- und Kleinschreibung und muss eindeutig sein. Ich finde den sicheren Feuerweg, um es zu setzen, ist der Name in diesem Feld, nachdem ich den Ansichtsteuerpult gewählt und Rückkehr gedrückt habe, um die Bearbeitung zu beenden (klicke nicht einfach auf das Feld). Ich habe festgestellt, dass bei der Konvertierung von Xcode 4 nach 5 in Storyboards etwas Korruption auftritt und umgekehrt, also könnte das Eintauchen in die plist / xml-Datei ebenfalls hilfreich sein.

Bearbeiten: Auch das Timing, wann dieses aufgerufen wird, ist wichtig, siehe presentModalViewController funktioniert nicht . Stellen Sie sicher, dass der View-Controller, der die Nachricht empfängt, bereits angezeigt wurde (d. H. In viewDidAppear, nicht in viewDidLoad).

Wie von Abdullah erwähnt, sollten Sie wahrscheinlich von der veralteten Methode zu:

wechseln %Vor%

In diesem Fall kann der Completion-Block ohne Problem sein, aber vc darf nicht sein.

    
owenfi 26.09.2013 00:59
quelle
0

[self presentModalViewController:vc animated:YES]; ist veraltet.

Versuchen Sie: [self presentViewController:vc animated:YES completion:nil];

    
Abdullah Shafique 26.09.2013 00:35
quelle
0

Hast du den anfänglichen ViewController vom Storyboard aus eingestellt? Wenn ja, stellen Sie sicher, dass die ID Ihres Storyboards identisch ist. Wenn Sie Storyboard verwenden, können Sie den viewController direkt präsentieren oder ablehnen, ohne den Code dafür schreiben zu müssen.

hoffe das hilft dir :)

    
Jignesh Agola 26.09.2013 04:16
quelle

Tags und Links