Wie änderst du die textLabel, wenn UITableViewCell ausgewählt ist?

8

Ich möchte die textLabel und detailTextLabel einer Zelle ändern, wenn sie ausgewählt wurde. Ich habe Folgendes versucht, aber es tritt keine Änderung auf:

%Vor%     
Ike 03.12.2009, 22:09
quelle

6 Antworten

10

Ich stimme zu, dass beim erneuten Laden der Tabellenansicht alle Zellen mithilfe von tableView:cellForRowAtIndexPath: entladen und neu geladen / angezeigt werden und die Originaldaten verwendet werden, nicht die aktualisierten @ "xxxxx" und @ "yyyyy" in Ihrer tableView:didSelectRowAtIndexPath: -Methode.

In einem kleinen Testprojekt konnte ich die Labels bei der Auswahl mit:

ändern %Vor%     
crafterm 20.04.2010 04:17
quelle
2

Sie sollten nicht versuchen, die Tabelle neu zu laden, während eine Zelle ausgewählt ist. Versuchen Sie stattdessen

  

[ZellensatzNeedLayout]

, nachdem Sie die obigen Änderungen an den Beschriftungen vorgenommen haben.

Gibt es auch einen Grund, warum Sie in der Methode auf den App-Delegaten verweisen?

    
Saurabh G 12.12.2009 06:33
quelle
2

Versuchen Sie, die ausgewählte Zelle neu zu laden (beschrieben durch indexPath):

%Vor%     
Alexis 11.07.2012 10:27
quelle
0

Erstellen Sie ein neues iPad-Projekt (geteilte Ansicht) und gehen Sie nun durch die Klassen- & gt; -Dateien. Der einfachste Weg ist dort gegeben worden. Die von XCode generierten Codes.

Beispiel Code Linien: -

%Vor%

Sie können sie in cellForRowAtIndexPath ||&& didSelectRowAtIndexPath ..

verwenden     
Akshay 08.02.2011 06:17
quelle
0

Sie sind sich nicht sicher, was Sie mit dem Delegaten zu tun versuchen, aber Sie sollten versuchen, die bereits instanziierte TabelleView aufzurufen; d. h. Anruf

%Vor%

Vielleicht bin ich nicht klar Was ich sage ist, dass Sie eine neue leere Tabellenansicht instanziieren

%Vor%

Überlegen Sie, den alten

durch Ersetzen zu ersetzen %Vor%     
user4254887 19.11.2014 07:10
quelle
-1

Haben Sie versucht, nur die ausgewählte Zelle zu aktualisieren, anstatt die gesamte Tabelle neu zu laden?

[cell setNeedsDisplay];

statt

[tableView reloadData];

Dies wird eine bessere Leistung haben und ich bin nicht, aber ich nehme an, dass die Auswahl verloren geht, wenn Sie die ganze Tabelle aktualisieren (dies könnte der Grund sein, warum Sie am Ende keine Änderung sehen) ....

    
yonel 10.12.2009 15:50
quelle