Отработанные часы и часы и без использования. Я не понимаю, был ли я неэффективен при поиске (поиск в Интернете), или это то, что на этот вопрос меньше вопросов или Возможно, я ошибся при выполнении ответов экспертов!Установите одну галочку для каждого раздела в UITableView и сохраните ее состояние
Я знаю, что есть несколько вопросов по установке галочки типа аксессуаров для одной строки, а для других строк в разделе нет, для прочтения сообщений here и there.
У меня есть 2 раздела в моем представлении таблицы. По умолчанию я хочу, чтобы 1-я строка в каждой секции была выбрана, т. Е. С контрольной меткой аксессуаров. Теперь, после выбора пользователем строки, я хочу, чтобы галочка была видны на выбранной строке only.I попытались объявить два пути индекса для отслеживания выбора строк в каждой section.Here мой код реализации:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = [NSString stringWithFormat:@"S%1dR%1d",indexPath.row,indexPath.section];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (indexPath.section == 0)
{
if(self.firstSectionIndex == indexPath)
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
else
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
if (indexPath.section == 1)
{
if(self.secondSectionIndex == indexPath)
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
else
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
if (cell == nil)
{
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
cell.backgroundColor = [UIColor clearColor];
cell.textLabel.textColor = [UIColor whiteColor];
switch (indexPath.section)
{
case 0:
{
if (indexPath.row == 0)
{
if(self.firstSectionIndex != indexPath)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
cell.textLabel.text = @"Yes";
}
if (indexPath.row == 1)
{
cell.textLabel.text = @"No";
}
}
break;
case 1:
{
if (indexPath.row == 0)
{
if(self.secondSectionIndex != indexPath)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
cell.textLabel.text = @"Easy";
}
if (indexPath.row == 1)
{
cell.textLabel.text = @"Medium";
}
if (indexPath.row == 2)
{
cell.textLabel.text = @"Hard";
}
}
break;
default:
break;
}
}
tableView.backgroundColor = [UIColor clearColor];
tableView.backgroundView = nil;
return cell;
}
в моем didSelectRowAtIndexPath, я сделал следующее:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0)
{
self.firstSectionIndex = indexPath;
}
if (indexPath.section == 1)
{
self.secondSectionIndex = indexPath;
}
[tableView reloadData];
}
Я искал состояние ячейки selecti чтобы быть сохраненным для долгосрочной ссылки, в поисках его я нашел полезную ссылку here.
Но он выбирает несколько ячеек и марку аксессуаров, которые применяются для всех строк в разделе. Я не понимаю, что не так. Можете ли вы направить меня на это!
Спасибо всем заранее :)
погуглить не выпучив :) –
Я заметил, что вы никогда не ясно, '' self.firstSectionIndex' или self.secondSectionIndex', которые не можете быть правы? – trojanfoe
@ LithuT.V Отредактировано :), не могли бы вы помочь мне –