我有一个tableView,我在故事板中将allowsMultipleSelection
设置为YES。
修改
我错了一件事...... [tableView indexPathsForSelectedRows]
在didSelectRowAtIndexPath
期间确实返回了一个带有1个对象的NSArray。
然而,在我重新加载表格之后它在cellForRowAtIndexPath
中不起作用,因此它会检查要应用的附件(复选标记或不是)。
在最初的问题中,我试图手动选择行...显然这是由tableView本身处理..但是在某个地方它会自动取消选择我的行,因为我从来没有在其上调用deselectRowAtIndexPath
...
原始问题:
出于某种原因,当我将单元格设置为选中时,它不会改变。
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
//cell does not update selected property to YES after this next line
cell.selected = YES;
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
}
我想我可以自己跟踪所选择的索引路径......但我可以发誓我之前使用的方法indexPathsForSelectedRows
成功了...
答案 0 :(得分:2)
您无法直接设置selected
属性
所以而不是
cell.selected = YES;
使用
[tableView selectRowAtIndexPath:TheIndexPAth animated:YES scrollPosition:UITableViewScrollPositionBottom];
答案 1 :(得分:1)
尝试[cell setSelected:YES animated:YES]
我非常确定cell.selected
是只读的
答案 2 :(得分:1)
请在pastbean中发布此课程的所有代码,并将链接放在此处,我们需要更多信息,
并尝试:
//在您的界面中
@interface YourClass (){
NSInteger _selectedIndex;
}
// cellForRowAtIndexPath:method
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
// didSelectRowAtIndexPath:method
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
_selectedIndex = indexPath.row;
[self.tableView reloadData];
}
答案 3 :(得分:0)
有点不公平,因为问题改变了但是..对我来说......答案是要么不要使用
indexPathsForSelectedRows
或不要致电
reloadTable
在你的tableView上。
我选择了后来,我在didSelectRow
和didDeselectRow
中修饰了配件,而不是在重新加载时进行修饰而只是从不重新加载表格。
如果某人能够提出涉及上述两种情况的解决方案,我会选择该答案。