2010-05-05 3 views
16

Ich bin neu in iphone development.Ich habe eine Tabelle erstellt, die meine Inhalte anzeigt. Wenn ich eine Zeile auswähle, wird der Status in blauer Farbe hervorgehoben und navigiert zu einer anderen Ansicht und wenn ich auf die Zurück-Schaltfläche klicke, wird die Tabelle angezeigt geklickt Zelle in blauer Farbe, ich möchte die markierte Farbe auf der Tabelle entfernen, während ich zurück zu seiner Ansicht navigieren. Wie kann ich das tun. Vielen Dank.Wie entferne ich die Zellauswahl-Stilfarbe, wenn ich wieder die Tabellenansicht im iPhone zeige?

Antwort

14

Ich habe es endlich durch die Implementierung in meiner Tabellenansicht Klasse bekommen.

- (void)viewWillAppear:(BOOL)animated 
{ 
    NSIndexPath *tableSelection = [self.tableView indexPathForSelectedRow]; 
    [self.tableView deselectRowAtIndexPath:tableSelection animated:NO]; 
} 
0

Die Standardimplementierung von viewDidAppear: sollte das für Sie erledigen. Wenn Sie diese Methode in Ihrem Tabellenansicht-Controller überschrieben haben, vergessen Sie nicht, in Ihrer Überschreibungsmethode [super viewDidAppear:animated] aufzurufen.

48

Ich denke, der allgemein akzeptierte Weg, dies zu tun ist, die Zelle abzuwählen, wie Sie zur neuen Ansicht navigieren. Verwenden Sie anstelle von viewWillAppear die Delegationsmethode didSelectRowAtIndexPath für tabletview und die selbe deselectRowAtIndexPath, die Sie verwendet haben.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath{ 
    [tableView deselectRowAtIndexPath:newIndexPath animated:YES]; 
} 

(und nach allgemein anerkannten, ich meine „Sachen, die ich am häufigsten in Beispiel-Code finden Sie unter“. Es hängt davon ab, was Sie wollen, dass es wie am Ende aussehen)

+0

Dies sollte die akzeptierte Antwort sein :) – Philip007

+1

Abwahl der Zelle auf diese Weise die Animation, wie die neue Szene Belastungen auftreten verursacht und nicht als die Szene erneut angezeigt wird, was, was @ Kriegers ist Antwort tut. Hängt davon ab, was du willst, schätze ich. – ele

+0

Stimmen Sie zu, dies ist die beste Lösung. – acoustic

14

Sie tun es falsch, auf der cellForRowAtIndexPath-Methode. Mit dieser

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

Auf Ihrem UITableViewCells

dies der richtige Weg wäre, wenn Sie die Zelle wollte nicht weder über einen Blick auf Rückwegs hervorgehoben noch zur Auswahl Kontakt werden. Wenn Sie die Zelle nur deaktivieren möchten, wenn Sie zurückkommen, sind die anderen Lösungen besser geeignet.

+0

Für Xamarin: cell.SelectionStyle = UITableViewCellSelectionStyle.None; Swift 3: cell.selectionStyle = .none; – Array

0

Für Swift 3:

override func viewWillDisappear(_ animated: Bool) { 
     if let indexPath = self.tableview.indexPathForSelectedRow { 
      tableview.deselectRow(at: indexPath, animated: true) 
     } 
    } 
Verwandte Themen