我在UITableView中有2个部分。我想在我选择的行上启用UITableViewCellAccessoryCheckmark。
在2个部分中只能有1个选中的行。
我怎样才能做到这一点?我发现的例子只显示了如何用1节来完成它。
谢谢。
答案 0 :(得分:1)
这适用于每个部分内的任意数量的部分和单元格
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForItem:indexPath.row inSection:indexPath.section]].accessoryType = UITableViewCellAccessoryCheckmark;
[self deSelectOtherCellsInTableView:tableView Except:indexPath];
}
-(void)deSelectOtherCellsInTableView:(UITableView *)tableView Except:(NSIndexPath *)indexPath
{
for(UITableViewCell *cell in [tableView visibleCells]){
NSIndexPath *index = [tableView indexPathForCell:cell];
if(index.section == indexPath.section && index.row != indexPath.row){
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
}
答案 1 :(得分:0)
您可以保留一个存储部分编号和行号的变量,以及一个bool,以便在选择完成后保留一个轨道。在didSelectRow
方法中,您可以访问这些值以从上一个单元格中删除选择(如果有),并将它们更新为当前选定的行和节值。
答案 2 :(得分:0)
这可能是你可以帮忙的。在UITavleview的委托方法中你可以实现这个代码
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.section==1)
{
NSUInteger row=indexPath.row;
// implement you code for first section;
}
elseif(indexPath.section==2)
{
NSUInteger row=indexPath.row;
//implement you code second first section;
}
.....................
.....................
.....................
}
答案 3 :(得分:0)
这里我假设每个部分的总行数是3,部分总数是2.
- (void)tableView:(UITableView *)tableView1 didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
for(NSInteger i=0;i<2;i++)
{
for (int index=0; index<3; index++)
{
NSIndexPath *indexpath=[NSIndexPath indexPathForRow:index inSection:i];
UITableViewCell *cell=[tableView1 cellForRowAtIndexPath:indexpath];
if ([indexPath compare:indexpath] == NSOrderedSame)
{
cell.accessoryType=UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType=UITableViewCellAccessoryNone;
}
}
}
}