Wie didSelectRowAtIndexPath vor prepareForSegue aufgerufen wird?

7

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.

    
Noriaki Takamizawa 05.11.2012, 15:50
quelle

4 Antworten

20

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.

    
LombaX 05.11.2012 16:00
quelle
1
  1. Machen Sie einen Übergang für Controller- & gt; controler
  2. Laden Sie Daten in didselectrowatindexpath
  3. Wenn es fertig ist - & gt; Führe deinen Abschnitt aus
NeverBe 05.11.2012 15:51
quelle
1

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

verwenden     
Hamid 26.02.2016 15:25
quelle
0

Hier sollten Sie Ihre View-Controller einrichten:

  1. Wenn der View-Controller, der die Tabellenansicht 1 lädt, in die Daten von Table View 1 geladen wird.
  2. In tableView:didSelectRowAtIndexPath: wird aufgerufen, feuern Sie das Segment mit performSegue: ab.
  3. Wenn der View-Controller, in dem die Tabellenansicht 2 geladen ist, die Daten für die Tabellenansicht 2 laden.

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.

    
Jesse Bunch 05.11.2012 15:54
quelle

Tags und Links