iOS UITableViewCells-Zeilen recycelt und Tag funktioniert nicht
Ich möchte etwas Hilfe beim Setzen von Tags für Schaltflächen in Zellen suchen. Dies ist eine Frage mit einem Link zu dem, was ich zuvor gepostet habe:iOS Verwenden von NSDictionary zum Laden von Daten in Abschnitte und Zeilen
Obwohl ich jetzt Daten dynamisch übergeben konnte, wurden die Daten möglicherweise nicht über die Schaltfläche zur Erneuerung in jeder Zeile abgerufen, und es wurde nur derselbe Buchtitel für jeden Abschnitt erkannt, wenn eine der Zeilen im Abschnitt ausgewählt wurde.
Basierend auf dem, was ich bisher gelesen habe, liegt es daran, dass der Knopf recycelt wird und nicht erkennen kann, welches Buch richtig ausgewählt wurde. Ich habe versucht, Tag zu setzen:
cell.renewButton.tag = indexPath.row;
So sieht mein Code jetzt aus:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
UserCustomCell *cell = (UserCustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.bookTitle.frame = CGRectMake(12, 0, 550, 40);
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"UserCustomCell" owner:self options:nil];
cell = userCustomCell;
self.userCustomCell = nil;
cell.renewButton.tag = indexPath.row;
}
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
cell.bookTitle.frame = CGRectMake(12, 0, 550, 40);
cell.renewButton.frame = CGRectMake(600, 14, 68, 24);
}
[cell.renewButton useBlackActionSheetStyle];
// ########## EDIT STARTS HERE dataSource = [[NSMutableDictionary alloc] init]; // Das müsste ein Ivar sein
for (NSDictionary *rawItem in myArray) {
NSString *date = [rawItem objectForKey:@"date"]; // Store in the dictionary using the data as the key
NSMutableArray *section = [dataSource objectForKey:date]; // Grab the section that corresponds to the date
if (!section) { // If there is no section then create one and add it to the dataSource
section = [[NSMutableArray alloc] init];
[dataSource setObject:section forKey:date];
}
[section addObject:rawItem]; // add your object
}
self.dataSource = dataSource;
//NSLog(@"Data Source Dictionary: %@", dataSource);
NSArray *sections =[[dataSource allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSString *sectionTitle = [sections objectAtIndex:indexPath.section];
NSArray *items = [dataSource objectForKey:sectionTitle];
NSDictionary *dict = [items objectAtIndex:indexPath.row];
cell.bookTitle.text = [dict objectForKey:@"name"];
cell.detail.text = [NSString stringWithFormat:@"Due Date: %@ Due Time: %@",
[dict objectForKey:@"date"], [dict objectForKey:@"time"]];
cell.renewButton.tag = indexPath.row;
return cell;
}
aber es funktioniert überhaupt nicht. Wäre für Anregungen sooooo dankbar :) Danke !!
P.S: Meine Kopie von xcode wird nicht aktualisiert, nur bis Version 4. Einige haben das Speichern des Tag-Status in DataModel erwähnt, es ist jedoch nur in neueren Versionen verfügbar. :)