#iphone #objective-c #uitableview
#iPhone #objective-c #uitableview
Вопрос:
Я работаю в UITableView и пытаюсь разрешить пользователю выбирать ячейки, используя этот код
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger row = [indexPath row];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if(cell != nil)
{
if(cell.accessoryType == UITableViewCellAccessoryNone)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
}
но проблема в том, что при подсчете ячеек на одной странице, если вы выберете ячейку с номером 1, номер строки 1 на каждой странице тоже будет выбран.
Ответ №1:
static NSString * cellIdentifier = @"CellIdentifier"
в этом месте используйте
NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%i",indexPath.row];
Комментарии:
1. Почему этот второй ответ? Вместо этого вам следует отредактировать свой первый ответ.
2. Спасибо! Можете ли вы объяснить, почему это устранило проблему?
3. Ты спас мой день. Спасибо. это решило проблему!
Ответ №2:
Хороший ответ, вы действительно помогли мне встать на правильный путь.
Мои 2 цента, чтобы помочь кому-то еще:
Я использую сгруппированную таблицу, поэтому я немного изменил ее, чтобы сделать ее:
NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%i-%i", indexPath.section, indexPath.row];
Надеюсь, это поможет кому-нибудь еще.
Ответ №3:
используйте это для передачи глобальной переменной из одного класса в другой класс или одного контроллера представления в другой контроллер представления.
globalString=[Arrayname objectAtIndex:indexPath.row];
Напишите этот код в методе делегирования tableviewdidselect.