如何保持 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 之间的空白空间的主要内容,如果未能解决你的问题,请参考以下文章
如何在滚动表格视图期间始终将表格视图的第一个单元格保持在其表格视图的顶部
如何正确地将不可滚动的 UITableView 放入 UIScrollView?