Ich habe eine NSArray und eine Tableview mit einigen Tasten, dessen Titel ist die Zeichenfolge in dem Array an der aktuellen indexPath ReiheindexPath.row kehrt letzte sichtbare Zelle und DidSelectRowAtIndexPath nicht
- (CustomCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexpath {
_selectedRow = indexpath.row;
static NSString *simpleTableIdentifier = @"customCell";
cell = [myTableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
[cell.playButton setTitle:array[indexpath.row] forState: UIControlStateNormal];
return cell;
}
Button-Titel sind gut gezeigt.
Jetzt habe ich einige mp3-Dateien, deren Namen die gleichen wie die Zeichenfolgen im Array sind, und ich möchte die Datei entsprechend der ausgewählten Zelle wiedergeben.
fileToPlay = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@", array[_selectedRow]]; ofType:@"mp3"];
Was hier passiert ist, dass die wiedergegebene Datei immer die ist, die der letzten sichtbaren Zelle in der Tabelle entspricht.
Ich habe auch
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexpath {
_selectedRow = indexpath.row;
}
aber Wenn ich versuche, hier zu drucken _selectedRow, erscheint nichts im Protokoll.
Wenn ich auf eine Zelle in der Tabelle klicke, scheint sie nicht ausgewählt zu sein (sie ist nicht grau gefärbt).
dataSource und Delegate sind auch gut mit der Tabellenansicht verbunden.
UPDATE
fand ich heraus, dass, wenn ich auf den Button klicken, es ist wie ich nicht auf der ausgewählten Zeile klicken bin. Wenn ich auf die Zelle (außerhalb der Schaltfläche) klicke, ist indexPath.row korrekt.
Versuchen Sie folgendes: Satz myGestureRecognizer.cancelsTouchInView auf false –
warum Sie hinzufügen _selectedRow = indexpath.row; in ZelleForRowAtIndex? –
Sind Sie sicher, dass 'didSelectRowAtIndexPath' überhaupt aufgerufen wird, wenn Sie die Zelle auswählen? Es wird möglicherweise gar nicht ausgewählt, was Ihre '_selectedRow' als letzte Zelle zurücklässt, die geladen wurde (unten, wenn Sie nach unten scrollen, oben, wenn Sie nach oben scrollen ...). – Putz1103