我正在搜索UITableView
的回调函数,当我使用apple远程导航时按下该行并按向上或向下按下以选择行(而不是当我按回车键时)。
在iOS上,当用户选择行时,我们会调用didSelectRowAtIndexPath
,但是当用户在UITableView
中导航时,我找不到调用的函数。
答案 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)
}