Cocoa touch UITableView通过NSFetchedResultsControllerDelegate,默认选择第一条记录?

Cocoa touch UITableView通过NSFetchedResultsControllerDelegate,默认选择第一条记录?,cocoa-touch,core-data,Cocoa Touch,Core Data,我有一个UITableView,它通过实现NSFetchedResultsControllerDelegate的控制器从CoreData填充。如何让它自动选择第一行并触发tableView:didSelectRowAtIndexPath消息 tableview用于各种谓词查询,因此我怀疑在UIViewController lifecycle viewDidLoad等上工作的解决方案,但我对该平台是新手,所以我是开放的 我尝试了很多方法,但我不确定在调用堆栈中放在哪里。我已经尝试在tableVie

我有一个UITableView,它通过实现NSFetchedResultsControllerDelegate的控制器从CoreData填充。如何让它自动选择第一行并触发tableView:didSelectRowAtIndexPath消息

tableview用于各种谓词查询,因此我怀疑在UIViewController lifecycle viewDidLoad等上工作的解决方案,但我对该平台是新手,所以我是开放的

我尝试了很多方法,但我不确定在调用堆栈中放在哪里。我已经尝试在tableView:cellforrowatinex:method中调用cell.selected=true,但这只会使单元格变黑,并且不会触发所选回调方法


一个tagent问题是,对于所有的委托和核心数据协议,它是否意味着异步数据获取多个线程?还是NSFetchedResultsController在同一线程中调用其所有相关方法?也许我只是害怕,如果它是异步的,那么会出现稍后很难排除的竞争条件。

还不能添加注释,以询问在选择单元格时尝试执行什么操作,所以我不得不猜测

如果要将单元格标记为选中,则应使用accessoryType属性,例如:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ...
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    ...
}
另一方面,如果您试图在选择第一个单元格的基础上执行某些逻辑,或者甚至显示一个新视图,则此逻辑应该位于一个方法中,您可以在加载数据后简单地调用该方法。

请执行以下操作:

if (indexPath.section == 0 && indexPath.row == 0) {
   //select first row by default
   [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom];
   //then populate detail view with corresponding managedObject
   [self tableView:tableView didSelectRowAtIndexPath: indexPath];
}

当然,这是假设您已经正确地编码了didSelectRowAtIndexPath。

我的目标是在didSelectRowAtIndexPath中添加逻辑,以便在另一个视图中显示数据。本质上是对数据模型的深入分析。我的gap正是加载数据后要调用的方法。结果证明这是一个哑巴。我陷入了webdeveloper的ajax套路,表加载是异步进行的,所以我从来没有考虑过一个明显的问题,那就是我应该在调用fetchedResultsController.performFetch后立即找到第一行并选择它:谢谢你让我放松。