我有一个tabBar控制器,在分段0我有一个viewcontroller有另一个视图控制器,也有一个tableview。当我在一个单元格中更改为selecteIndex 0时,我必须从segmentedIndex 1中的viewcontroller更改
let appDelgate = UIApplication.shared.delegate as! AppDelegate
// FIXME: - Update to real post id comming from Notification endpoint
appDelgate.postID = 81
self.tabBarController?.selectedIndex = 0
81仅用于测试目的 然后在视图控制器中管理selectedIndex 0 我在viewDidAppear
中设置了这个override func viewDidAppear(_ animated: Bool){
let appDelegate = UIApplication.shared.delegate as! AppDelegate
if let postID = appDelegate.postID, let data = feedFriends.feedVC.theData {
self.pagerVC.selectedIndex = 0
let i = data.index(where: { data in
data.id == postID
})
print("i value: \(i)")
let indexPath = IndexPath.init(row: i!, section: 0)
feedFriends.feedVC.tableView.scrollToRow(at: indexPath , at: .top, animated: true)
appDelegate.postID = nil
print("el valor de post id \(String(describing: appDelegate.postID))")
}
}
如果在使用previos代码进行转换之前出现此视图,则所有这些都按预期工作。是我点击选定的索引1并点击一个单元格以显示selectedIndex 0并且这不显示,然后滚动没有发生let data = feedFriends.feedVC.theData
如果没有完成此检查我有一个无法找到的nil因为asData任务没有从网络加载theData,所以如何在数据加载完成后滚动到所需的索引。
我见过这个Auto scrolling to a cell with a specific value
但我已经解决了滚动到指定值的问题。所以我的问题是如何在tableview加载数据后知道何时scrool,因为tableview没有委托通知所有数据已经加载所以tableview是重新加载数据,与链接的差异是那样的当tableview alredy有数据时,我将滚动到所需的单元格,但是如果所有视图都没有从故事板中加载。
用什么函数或协议或委托来表示tableview嘿 啊,你加载了你的数据,然后是tableview.scrolltorow()。
答案 0 :(得分:0)
使用viewDidAppear
编写上述代码的视图控制器作为feedFriends.feedVC
的委托,符合具有告诉委托feedFriends.feedVC.theData
可用的函数的协议。在该方法中,将表格视图滚动到所需的单元格。