我在ViewController中有2个TableView,我为它们设置了约束。我还设置了约束和对齐。问题在于,当它开始时,对齐按预期工作,但是当我按下上面的TableView1(到达底部)时,它会推动最后一个单元格(请查看下面的屏幕截图)。
Here is a video showing the problem
And the behaviour of horizontal inspector
最后更新:我想到了一种解决方法,但我无法弄清楚如何应用它。如果我可以获得TableView中最后一行的y位置,也许我可以强制TableView不要滚动到位置+行高+#39;下面。我有办法做到吗?
原始问题:
它启动时工作正常并且看起来像预期的那样,最后一行/单元格的底部附加到TableView的底部
(红色是TableView1,粉红色是TableView2)
但是当向上滚动并到达底部时,滚动比底部单元格更多。相反,底部单元格应该连接到TableView1的底部。
(蓝色是TableView1'背景色)
可能是什么问题?如何将TableView1的底部TableViewCell附加到TableView1的底部,以便不进行更多滚动?
更新:我制作了TableView1的高度132和每行44.它创建的间隙大小与44相同。但是我检查了numberOfRowsInSection
,计数是预期的,而不是+1。
为什么会这样?
Update2:我很确定它不是代码,但这里是代码
TableView1约束:
let sampleData = [
PreviewDetail(title: "Small"),
PreviewDetail(title: "Medium"),
PreviewDetail(title: "Large"),
PreviewDetail(title: "Large")
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell?
if tableView == self.TableView1 {
cell = tableView.dequeueReusableCellWithIdentifier("TV1Cell", forIndexPath: indexPath)
let previewDetail = sampleData[indexPath.row]
cell!.textLabel!.text = previewDetail.title
}
return cell!
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var count:Int?
if tableView == self.TableView1 {
count = sampleData.count
}
return count!
}
答案 0 :(得分:0)
最后我找到了答案。奇怪的是,当我把“观景台”作为......时,
TabBarController -> NavBarController -> ViewController -> View -> 2xTableViews
..它导致了错误的观点。我尝试在虚拟项目中重新创建问题以了解问题的本质,并且它也在虚拟项目中引起了同样的问题。
答案:
答案是在ViewController中取消勾选Adjust Scroll View Insets
。现在一切正常。
答案 1 :(得分:-1)
虽然您的代码中似乎没有任何错误,但当我尝试重新创建场景时,我无法重现它。我使用两个宽度相等的UITableViews,tableViews的两个单元格都是Default Basic。 这是代码。
class ViewController: UIViewController {
@IBOutlet var tableView1:UITableView!
@IBOutlet var tableView2:UITableView!
let data1 = ["First Table, Data 1","First Table, Data 2","First Table, Data 3","First Table, Data 4","First Table, Data 5","First Table, Data 6","First Table, Data 7","First Table, Data 8"]
let data2 = ["Second Table, Data 1","Second Table, Data 2","Second Table, Data 3","Second Table, Data 4","Second Table, Data 5","Second Table, Data 6","Second Table, Data 7","Second Table, Data 8"]
override func viewDidLoad() {
super.viewDidLoad()
tableView1.dataSource = self
tableView2.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension ViewController:UITableViewDataSource
{
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
if tableView.isEqual(self.tableView1)
{
return data1.count
}
else if tableView.isEqual(self.tableView2)
{
return data2.count
}
return 0
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
if tableView == self.tableView1
//if tableView.isEqual(self.tableView1)
{
let cell = tableView.dequeueReusableCellWithIdentifier("Cell1")
cell?.textLabel?.text = data1[indexPath.row]
return cell!
}
else
{
let cell = tableView.dequeueReusableCellWithIdentifier("Cell2")
cell?.textLabel?.text = data2[indexPath.row]
return cell!
}
}
}