2016-04-18 17 views
0

Ich habe zwei Methoden, die accerssory Typ einer Zelle ändern. Die erste wird aufgerufen, nachdem alle Zellen geladen wurden, die andere wird aufgerufen, wenn der Benutzer auf eine Zelle klickt.Cant access cell von willDisplayCell-Methode

Zweite Methode funktioniert gut, entfernt das Häkchen aus der ausgewählten Zelle. Leider tut der erste nichts (Ich möchte ein Häkchen zu einer der Zellen hinzufügen). Es macht mich verwirrt, beceause diese Methoden sollten die gleichen funktionieren, sollten sie nicht?

// First method 
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 

    if ([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] 
lastObject]).row) 
    { 
     LanguageTableViewCell *cell = [self.tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow:myNumber inSection:0]]; 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    } 
} 

// Second method 
- (void)tableView:(UITableView)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    LanguageTableViewCell *cell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:myNumber inSection:0]]; 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} 

Ich habe versucht, die Klasse der Zelle zu ändern, aber es funktioniert immer noch nicht. Ich bin nicht sicher, ob die erste Funktion in der richtigen Zeit aufgerufen wird = nach viewDidLoad ... Danke für die Hilfe!

+0

Ganz kreativer Ansatz) Was ist "myNumber"? Ist es eine Konstante? – Zapko

+0

Eine Randnotiz: Wenn Sie Ihre Zellen wiederverwenden, werden Sie einige Probleme damit bekommen, wie Sie die Dinge hier tun. Wenn Sie ein AccessoryCheckmark für die Zelle ohne Datenquellenverweis anzeigen, wird diese Zelle bei einem Bildlauf nach unten oder oben möglicherweise erneut verwendet, und Sie sehen ein Häkchen, an dem Sie es nicht erwarten. Ich nehme an, Sie haben derzeit nur wenige Rollen in Ihrer Tabelle, weshalb Sie dieses Problem nicht bemerkt haben. – pnizzle

Antwort

1

Sie möchten - (__kindofUITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath verwenden.

+0

Ich sehe, ich habe Zelle zweimal definiert. Vielen Dank! – Lolipop52