У меня есть NSArray и Tableview с некоторыми кнопками, чье название является строка в массиве в текущей строке indexpathindexPath.row возвращает последнюю видимую ячейку, и didSelectRowAtIndexPath не называется
- (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;
}
названия кнопок хорошо показано на рисунке.
Теперь у меня есть mp3-файлы, имена которых совпадают с строками в массиве, и я хочу воспроизвести файл, соответствующий выбранной ячейке.
fileToPlay = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@", array[_selectedRow]]; ofType:@"mp3"];
Что здесь происходит, так это то, что воспроизводимый файл всегда соответствует последней видимой ячейке в таблице.
У меня также есть
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexpath {
_selectedRow = indexpath.row;
}
, но если я пытаюсь напечатать _selectedRow здесь, ничего не появляется в журнале.
Когда я нажимаю на ячейку в таблице, она не кажется выбранной (она не серая).
dataSource и делегат также хорошо связаны с табличным представлением.
UPDATE
Я обнаружил, что если я нажимаю на кнопку, это как я не нажав на выбранной строке. если я нажимаю на ячейку (вне кнопки), indexPath.row верен.
Попробуйте это: набор myGestureRecognizer.cancelsTouchInView ложной –
почему вы добавляете _selectedRow = indexpath.row; в cellForRowAtIndex? –
Вы уверены, что 'didSelectRowAtIndexPath' даже вызывается, когда вы выбираете ячейку? Возможно, он не будет выбран вообще, что оставит ваш '_selectedRow' в качестве последней загруженной ячейки (внизу, если вы прокручиваете вниз, сверху, если вы прокручиваете ...). – Putz1103