如何保持 Tableview 滚动以及如何在 Swift3 中删除原型单元和 tableview 之间的空白空间

Posted

技术标签:

【中文标题】如何保持 Tableview 滚动以及如何在 Swift3 中删除原型单元和 tableview 之间的空白空间【英文标题】:How to keep Tableview scrolling and how to delete empty space between prototypecell and tableview in Swift3 【发布时间】:2017-05-02 06:49:02 【问题描述】:

我有两个关于 Swift3 中的 tableview 的问题

这里我的表格视图没有滚动,即使我取消选中 UiView 属性检查器中的调整滚动视图插图,单元格上方的空白空间也不会删除。

这就是为什么即使启用了滚动,我的表格视图也不滚动 如何滚动表格视图在我的代码中有什么可做的

请帮我解决两个问题

我写了如下代码

import UIKit

class movieViewController: UIViewController,UITableViewDataSource,UITableViewDelegate 

    @IBOutlet weak var tableviewLayout: UITableView!

    var itemsArray = ["One","Two","Three","Four","Five","six","Seven","Eight","Nine","Ten"]

    override func viewDidLoad() 
        super.viewDidLoad()
        tableviewLayout.isScrollEnabled = true
        scrollToLastRow()
    

    override func viewWillAppear(_ animated: Bool) 
        self.tableviewLayout.contentInset = UIEdgeInsetsMake(-35, 0, 0, 0);
      //only this is working   
      //but when i uncheck the adjust scroll view insets why it is not working
    

    func numberOfSections(in tableView: UITableView) -> Int 
        return 1
    

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return itemsArray.count
    

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell   
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        cell.textLabel!.text = itemsArray[indexPath.row]
        return cell
    

    func scrollToLastRow() 
        let indexPathrow = NSIndexPath(row: itemsArray.count - 1, section: 0)
        self.tableviewLayout.scrollToRow(at: indexPathrow as IndexPath , at: UITableViewScrollPosition.bottom, animated: true)
    


【问题讨论】:

你把tableviewLayout.dataSource和tableviewLayout.delegate设置为self了吗? 我没有在代码中看到任何奇怪的东西,它应该可以工作。您的故事板或 XIB 文件或约束怎么样,您可以发布吗?空间问题应该处理约束。 为了滚动,你应该在 viewDidAppear 中调用 scrollToLastRow @Vamshi Krishna 我没有直接在 viewdidload() 中编写 self.delegate,我已经在情节提要中给出,并且我已将所有代表设置为 tableview @Shhalva Avanashvili 我没有使用 xib 文件,我将 tableview 作为一个分组,我添加了原型单元格,对于跟踪,我采用了一个标签并给出了前导空间、顶部空间、宽度和高度等约束但是对于第一个单元格,我得到了 35 个空白空间,即使我取消选中了 viewcontroller adjut scrollview 昆虫 【参考方案1】:

scrollToLastRow()viewDidLoad 方法中不起作用。您应该在viewDidAppear 方法中使用它,它会正常工作。

【讨论】:

谢谢 Nishant Bhindi,当我在 viewDidAppear 中调用 scrollToLastRow() 方法时它正在工作,但它会直接从那里结束,它不会移动意味着当我尝试滚动时它不会滚动我错过了吗还有什么 你的意思是滚动动画没有发生?应该是因为您已将animated 属性赋予true。如果它没有发生,那么使用 perform `self.perform(#selector(self.scrollToLastRow), with: nil, afterDelay: 0.2)` 如果它真的对你有帮助,请提供投票或更正答案。

以上是关于如何保持 Tableview 滚动以及如何在 Swift3 中删除原型单元和 tableview 之间的空白空间的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止 UIView 使用 tableview 滚动?

在 tableview 中水平滚动以及正常的垂直滚动

如何在滚动表格视图期间始终将表格视图的第一个单元格保持在其表格视图的顶部

如何正确地将不可滚动的 UITableView 放入 UIScrollView?

点击tableview内的collectionview单元格导航

添加具有行动画的单元格时,将 tableview 保持在相同的滚动位置