2011-05-16 51 views
0

在我的表视图,我设置的选择样式里面小区选择的风格变化

- (void)tableView:(UITableView *)iTableView didSelectRowAtIndexPath:(NSIndexPath *)iIndexPath { 

MyCell *aCell = (MyCell *)[iTableView cellForRowAtIndexPath:iIndexPath]; 
aCell.selectionStyle = UITableViewCellSelectionStyleBlue; 

现在,在第二次敲击,而不是在第一抽头选择风格变化。一旦单元被轻敲,那么它可以正常工作,如果你回来并再次选择它。这是什么原因?

+0

你可以发布你的代码为数据源委托 - 'cellForRowAtIndexPath'?我的猜测是你需要在改变底层模型之后调用'reloadData'。 – 2011-05-16 21:30:40

回答

3

这样做的原因是,当已经小区选择的tableView:didSelectRowAtIndexPath:方法被调用(惊喜!)。所以在之前应用默认选择样式,该方法第一次被调用,即在执行aCell.selectionStyle = UITableViewCellSelectionStyleBlue之前。当选择风格改变一次时,显然它仍然适用于随后的调用(水龙头)。要解决此问题,您必须在选择单元格之前调用方法tableView:cellForRowAtIndexPath:tableView:willSelectRowAtIndexPath:中设置选择样式。