Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何使用selectRowAtIndexPath强制UITableViewCell选择?_Iphone_Objective C_Ios_Uitableview - Fatal编程技术网

Iphone 如何使用selectRowAtIndexPath强制UITableViewCell选择?

Iphone 如何使用selectRowAtIndexPath强制UITableViewCell选择?,iphone,objective-c,ios,uitableview,Iphone,Objective C,Ios,Uitableview,我试图使用SelectRowatineXpath强制选择(突出显示)UITableViewCell 例如, 假设我希望始终突出显示表视图中的第一个单元格,我将在ViewDidDisplay中应用以下逻辑 [self.tableViewPrompts selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:0]; 很好地工作。但是当我尝试在应用程序的其他地方应用相同的逻

我试图使用SelectRowatineXpath强制选择(突出显示)UITableViewCell

例如, 假设我希望始终突出显示表视图中的第一个单元格,我将在ViewDidDisplay中应用以下逻辑

[self.tableViewPrompts selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:0];
很好地工作。但是当我尝试在应用程序的其他地方应用相同的逻辑时,单元格没有被选中。我甚至尝试在调用上述方法之前取消选择其他单元格,并在调用此方法之前和之后重新加载tableview,但这些方法似乎都不起作用

我甚至使用tableview的委托强制调用didSelectRowAtIndexPath.Event,但这不起作用

PS:单元格的选择不会触发任何操作,我只是想突出显示所需的单元格

我做错了什么


非常感谢您的帮助

我很困惑,你的情况为什么不起作用。这是我在视图控制器中的几个地方使用的方法,包括
viewdideappear
,我看不出与您所做的有什么真正的区别:

- (void)selectRow1
{
    NSIndexPath* idx = [NSIndexPath indexPathForRow:1 inSection:0];
    [_table selectRowAtIndexPath:idx animated:NO scrollPosition:UITableViewScrollPositionMiddle];
    [self tableView:_table didSelectRowAtIndexPath:idx];
}
\u table
是我的table属性变量,调用
didSelectRowAtIndexPath
可以进行选择操作,但除此之外,代码的唯一真正区别是scrollPosition参数

单元格的选择不会触发任何操作,我要做的就是突出显示所需的单元格

为什么不使用单元格的高亮显示属性

UITableViewCell *cell = [self cellForRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: 0]];
cell.highlighted = YES;
现在无法测试它,但它应该可以工作

编辑

当然,更好的方法是:改变你的cellForRowAtIndexPath来实现这一点

-(UITableViewCell) tableView:cellForRowAtIndexPath:
//...
if (indexPath.row == 0 && indexPath.section == 0) cell.highlighted = YES
else cell.highlighted = NO;
//...
return cell;

只需使用setSelected高亮显示单元格:

  [cell setSelected:YES];

我创建此扩展的全部目的

这正是我所需要的。您可能会认为selectRowAtIndexPath会为您这样做…:PBe警告说,仅设置单元格的
突出显示的
属性不会使单元格从父表视图的角度“选中”。它只是改变了细胞的外观。如果这就是您想要的,那么这就好了。在2013年的这个问题中,OP表示“我所要做的就是突出显示所需的单元格”-因此应该很清楚我有这个问题,当我发现UITableView属性检查器显示“Selection”以某种方式设置为“none”时,修复了它。当设置为“Single Selection”时,它起作用。请确保在选择Rowatindexpath后没有调用reloadData。