在表视图加载数据后将表滚动到索引

时间:2017-11-30 22:05:05

标签: ios swift uitableview

我有一个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()。

1 个答案:

答案 0 :(得分:0)

使用viewDidAppear编写上述代码的视图控制器作为feedFriends.feedVC的委托,符合具有告诉委托feedFriends.feedVC.theData可用的函数的协议。在该方法中,将表格视图滚动到所需的单元格。