tvOS UITableView小区聚焦

时间:2015-10-09 22:30:52

标签: uitableview tvos

我正在搜索UITableView的回调函数,当我使用apple远程导航时按下该行并按向上或向下按下以选择行(而不是当我按回车键时)。

在iOS上,当用户选择行时,我们会调用didSelectRowAtIndexPath,但是当用户在UITableView中导航时,我找不到调用的函数。

3 个答案:

答案 0 :(得分:15)

您必须实现此委托方法:

- (void)tableView:(UITableView *)tableView didUpdateFocusInContext:(UITableViewFocusUpdateContext *)context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator
{
     //this gives you the indexpath of the focused cell
     NSIndexPath *nextIndexPath = [context nextFocusedIndexPath];
}

然后你可以在那个功能中随心所欲地做任何事情

答案 1 :(得分:0)

如果您想要选择最后一个选项,您可以这样做

NSIndexPath *nextIndexPath = [context nextFocusedIndexPath];
NSIndexPath *prevIndexPath = [context previouslyFocusedIndexPath];

UITableViewCell *nextCell = [self.tableView cellForRowAtIndexPath:nextIndexPath];
UILabel *nextTitleLabel = (UILabel *)[nextCell viewWithTag:100];
nextTitleLabel.textColor = [UIColor blackColor];

UITableViewCell *prevCell = [self.tableView cellForRowAtIndexPath:prevIndexPath];
UILabel *prevTitleLabel = (UILabel *)[prevCell viewWithTag:100];
prevTitleLabel.textColor = [UIColor whiteColor];

答案 2 :(得分:0)

在2019年中期进行测试,似乎不再可以从上下文对象中获取nextFocusedIndexPath。但是解决起来并不难:

override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
  let cell = context.nextFocusedView as! UITableViewCell
  let indexPath = table.indexPath(for: cell)
}