我有一个桌面视图,用户点击几个单元格,根据点击,该单元格中的图像被突出显示的图像替换,让用户知道它已被选中。
一个这样的单元格是USE CURRENT LOCATION单元格。其下方的第二个单元格是另一个调用UIPicker的SELECT YOUR CITY单元格。
我想要的是,如果用户点击USE CURRENT LOCATION单元格(图像被高亮显示的图像替换),但如果用户点击SELECT YOUR CITY单元格以调出拾取器,我需要将第一个细胞图像设置回正常状态。这样我告诉用户“使用当前位置”已被自动禁用,因为您正在手动选择城市。
所以我尝试添加这一行:
//Deselect Row 1
[tableView deselectRowAtIndexPath:1 animated:YES];
案例2中的didSelectRowAtIndexPath内部(因为案例0是带有图像的单元格)
答案 0 :(得分:0)
在-tableView:cellForRowAtIndexPath:
中将selectionStyle
设置为UITableViewCellSelectionStyleNone
或者您在界面构建器中执行此操作(目标是避免选择蓝色/灰色)
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"SomeCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
// Configure your cell
return cell;
}
然后在-tableView:didSelectRowAtIndexPath:
中自定义行为:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSIndexPath *useCurrentLocationCellIndexPath = [NSIndexPath indexPathForRow:1
inSection:0];
NSIndexPath *pickCityCellIndexPath = [NSIndexPath indexPathForRow:2
inSection:0];
if ([indexPath compare:useCurrentLocationCellIndexPath] == NSOrderedSame) {
// The "use current location" cell was selected. Change the image to the highlighted image
[tableView cellForRowAtIndexPath:indexPath].imageView.image = highlightedImage;
} else if ([indexPath compare:pickCityCellIndexPath] == NSOrderedSame) {
// The "pick city" cell was selected. Change the image to normal one. And show the picker using your code.
[tableView cellForRowAtIndexPath:useCurrentLocationCellIndexPath].imageView.image = normalImage;
//[self showCityPicker];
}
}
答案 1 :(得分:0)
我最终使用了:
//Deselect Row 1 - only highlights it
NSIndexPath* selectedCellIndexPath= [NSIndexPath indexPathForRow:1 inSection:0];
[self.tableView selectRowAtIndexPath:selectedCellIndexPath animated:false scrollPosition:UITableViewScrollPositionMiddle];
[self tableView:self.tableView didSelectRowAtIndexPath:selectedCellIndexPath];