gpt4 book ai didi

ios - indexPathForSelectedRow 返回零

转载 作者:IT王子 更新时间:2023-10-29 08:10:04 26 4
gpt4 key购买 nike

我有一个带有 segue 的 UITableViewController,我试图在其中获取当前选定的行:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"EditFilterElementSegue"]){
// Get the element that was clicked and pass it to the view controller for display
NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
Element *element = [fetchedResultsController objectAtIndexPath:selectedIndexPath];
FilterElementTableViewController *vc = segue.destinationViewController;
vc.filter = filter;
vc.element = element;
}
}

问题是 indexPathForSelectedRow 返回 nil。文档说“如果索引路径无效”则返回 nil。如果我添加:

        [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:0];
selectedIndexPath = [self.tableView indexPathForSelectedRow];

selectedIndexPath 有效。所以,我目前假设该行以某种方式未被选中。谁能告诉我如何确定是否是这种情况以及可能导致这种情况的原因是什么?

这段代码工作正常,直到我转换为使用 NSFetchedResultsController(否则可以正常工作)。我还在其他几个工作正常的 TableView Controller 中使用 indexPathForSelectedRow(其中一个还使用 NSFetchedResultsController)。

我也试过打破 didSelectRowAtIndexPath,但同样的事情发生在那里。 (预期,因为它是在 prepareForSegue 之后调用的。)

最佳答案

一个可能的原因是你在其中一个 UITableViewDelegate 方法中写了一些东西 -

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
}

通常的做法是取消选择刚刚选择的行

更新:

在 Swift 4.2 中,xcode 10:

注释掉这行

tableView.deselectRow(at: indexPath, animated: true)

在函数中

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

关于ios - indexPathForSelectedRow 返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9073309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com