Ich mache iOS-App, die Tableview-Basis ist.
Folgendes möchte ich tun.
Tabellenansicht1 - & gt; Tabellenansicht2
Sobald ich einen von tableCell ausgewählt habe, wird new tableView2 angezeigt.
Ich möchte die Zelle vor dem Erscheinen eines neuen TableViews einblenden.
Nichtsdestoweniger ist Hilight so langsam, weil neue TableView-Daten geladen werden.
Ich habe nachgesehen. Der Grund dafür ist, dass prepareForSegue
vor didSelectRowAtIndexPath
aufgerufen wird.
Dann könnten Sie mir sagen, wie ich didSelectRowAtIndexPath
vor prepareForSegue
aufrufen soll?
Oder sagen Sie mir, wie Sie eine Tabellenzelle einrichten, wenn die Zelle ausgewählt ist.
Alles Gute.
Sie verbinden zwei verschiedene Möglichkeiten, dies zu tun.
1 - Erste Alternative - verwende nur Storyboards und prepareForSegue:
Verbinden Sie Ihre Prototypzelle mit dem zweiten Viewcontroller im Storyboard (die Verbindung muss von der Zelle ausgehen und am zweiten Viewcontroller enden). In diesem Fall müssen Sie die Methode only prepareForSegue und nicht didSelectRowAtIndexPath verwenden. Die zweite VC wird automatisch nach prepareForSegue geschoben.
2 - Zweite Alternative - benutze didSelectRowAtIndexPath:
Sie verwenden didSelectRowAtIndexPath nur, wenn Sie den Abschnitt vom ersten viewcontroller (und nicht von der Zelle) mit dem zweiten viewcontroller verbinden. Am Ende der Methode didSelectRowAtIndexPath müssen Sie performSegue aufrufen.
Was Sie brauchen, ist die folgende Funktion. Es wird vor preparedForSegue aufgerufen werden. Zuerst müssen Sie eine Var in Ihrer Klasse definieren und dann in dieser Funktion wie folgt setzen:
%Vor%Dann können Sie diesen Wert endlich in der Funktion preparedForSegue
verwendenHier sollten Sie Ihre View-Controller einrichten:
tableView:didSelectRowAtIndexPath:
wird aufgerufen, feuern Sie das Segment mit performSegue:
ab. Es sieht so aus, als ob Sie die Daten für Table View 2 möglicherweise vorzeitig laden würden - weshalb Sie die Verzögerung sehen. Da Sie den Hauptthread mit dem Laden Ihrer Daten verknüpfen, kann die Benutzeroberfläche nicht aktualisiert werden und zeigt Ihnen die blaue Markierung an.
Wenn Sie Ihre Daten in der Methode viewDidLoad
laden, vermeiden Sie teure Ladevorgänge, wenn ein Benutzer eine Tabellenansichtszelle auswählt. Sie sollten Ihrem View-Controller nur mitteilen, dass er den Übergang zum Detailansicht-Controller in der tableView:didSelectRowAtIndexPath:
-Methode durchführt.
Tags und Links ios