我遇到了一个有趣的麻烦:
我有一个NSArray
,其中填充了一些动物名称(字符串)。我使用此数组来填充UITableView.
当您按下任何cell
(动物)时,您将进入详细视图并阅读有关此动物的更多信息。然后,我改进了我的应用程序,现在在UITableView
中,第一个单元格是一个单元格,它只是说明了UITableView中有多少动物。就像:
发现动物:4(第一个细胞)
问题是,当您按下第一个细胞(动物发现:4)时,您将移动到随机动物的详细视图中。这是因为在index 0
的数组中有一只动物。因此,您可以在此动物的详细视图中移动。当用户按下第一个单元格时,我不想做任何事情。我怎样才能达到它?
答案 0 :(得分:4)
在表视图的didSelectRowAtIndexPath方法中,如果提供的indexPath参数行为零,则返回。如果它大于零,则从中减去一个,这将成为要显示的项的数组索引。像这样:
- (void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tv deselectRowAtIndexPath:[tv indexPathForSelectedRow] animated:YES];
int idx = [indexPath row];
if (idx == 0)
{
return;
}
idx--;
// use idx as the index into your array of animals as you did initially
}
答案 1 :(得分:2)
基于indexPath.row条件(在您的情况下应该为零)
cell.selectionStyle = UITableViewCellSelectionStyleNone;
但是这个方法仍然会调用didSelectRowAtIndexPath,所以你必须执行以下操作
cell.userInteractionEnabled = NO;
答案 2 :(得分:1)
我认为更好的解决方案是在您的模型中表示您希望在视图中看到的内容。所以我会这样做:
myModel = [NSMutableArray arrayWithObjects:@"3 animals", @"dog", @"cat", @"chicken", nil];
// here, wherever else my model is altered:
[myModel replaceObjectAtIndex:0 withObject:[NSString stringWithFormat:@"%d animals", myModel.count-1]];
现在其他任何地方都不需要特殊的逻辑,除了@ Praveen-K在indexPath.row = 0时配置单元格时的建议...
cell.userInteractionEnabled = NO;
答案 3 :(得分:0)
试试这个......
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row ==0)
{
//Select first Row;
}
else
{
//Do What you Want
}
}