scrollToRowAtIndexPath 上非常奇怪的 UITableViewController.tableview 行为

Posted

技术标签:

【中文标题】scrollToRowAtIndexPath 上非常奇怪的 UITableViewController.tableview 行为【英文标题】:VERY weird UITableViewController.tableview behaviour on scrollToRowAtIndexPath 【发布时间】:2009-06-13 23:13:59 【问题描述】:

大家好,我很困惑,我一直在努力解决这个问题。我有一个 UIViewController,viewControllerBrowse,有两个 TableViewController,Designations & Types,我调用第二个 UIViewController,viewControllerSelectLibrary,它进行一些 SOLite 操作并从前两个 TableView 提要的位置填充两个数组。

当我要回调 viewControllerBrowse 时,我在 NSThread 中执行:

[appDelegate.viewControllerBrowse.tvcTypes.tableView reloadData];
[appDelegate.viewControllerBrowse.tvcTypes.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];

[appDelegate.viewControllerBrowse.tvcDesignations.tableView reloadData];

[appDelegate.viewControllerBrowse.tvcDesignations.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];

真正让我感到困惑的是,在 tvcTypes 案例中,它的 tableView 选择了它的第一行并滚动到顶部

但是,对于 tvcDesignations,它的 tableView 会选择它的第一行,但它不会滚动到顶部

第一行被选中的事实告诉我这不是appDelegate中的引用问题,就好像只有一半的方法在工作/??????????????

以前有人打过这个吗??????

【问题讨论】:

【参考方案1】:

只是一个猜测,但如果你将 NO 传递给动画会发生什么?不幸的是,我从来没有具体看到过这种行为,但我看到一些动画会导致奇怪的交互。

另外,哪个视图控制器是可见的?他们中的任何一个?

【讨论】:

先生,你搞定了,它工作得很好,但考虑到两个 TableViews 在同一个 ViewController 上(viewControllerBrowse,设置为 UINavigationController 的 appDelegate 和 Root 上的属性)并且代码有效,这很奇怪在将其移动到 NSThread 之前。我是否首先在 tvcTypes 或 tvcDesignations 上调用 selectToRowAtIndexPath 也没关系。奇怪的。关于您的问题,appDelegate.window 只有 UINavigationController 和 viewControllerBrowse(两个 Tableview 所在的位置)作为 Root,从那里我推送到 viewControllerSelectLibrary,做一些 SQLITE 工作,DID THE ... selectRowAtIndexPath on a ref to viewControllerBrowse 然后 popToRoot 它之前都在工作,只是像我提到的那样将它移动到 NSThread 啊,我错过了线程部分。 UIKit 不是线程安全的,因此在线程内调用 UIKit 方法会产生不可预知的结果。您需要以某种方式向主线程发出此操作需要发生的信号,例如使用 performSelectorOnMainThread:withObject: variables 之一 哦!感谢您提供的信息,当我调用 tableViewControllers.tableView 的 reloadData 方法时,我从这个线程中得到了一个奇怪的内存泄漏。它可能来自于此。

以上是关于scrollToRowAtIndexPath 上非常奇怪的 UITableViewController.tableview 行为的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 8 上,scrollToRowAtIndexPath 无法正确滚动到底部

我对“scrollToRowAtIndexPath”有疑问。我得到这个错误。 (我已经上传了课程)

scrollToRowAtIndexPath 在标题部分内滚动

scrollToRowAtIndexPath 上非常奇怪的 UITableViewController.tableview 行为

求助关于scrollToRowAtIndexPath 不执行

有没有办法控制 UITableView scrollToRowAtIndexPath 上的动画?