gpt4 book ai didi

swift - 无法滚动到 tableView 中某个部分的一行

转载 作者:行者123 更新时间:2023-11-28 13:58:34 25 4
gpt4 key购买 nike

我想要的是在调用 viewDidAppear 时滚动到 tableView 中某个部分中的一行。我创建了这个简单的应用程序进行测试。我想弄清楚为什么当我尝试使用 scrollToRow 时它会崩溃。它在 AppDelegate 中崩溃 ---- 错误线程 1:SIGABRT 信号

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

let tableView = UITableView()
let section = 2
let row = 3

let data = ["Cat", "Dog", "Bird", "Cow", "Owl", "Deer", "Rabbit", "Bull", ]


@IBOutlet weak var myTable: UITableView!

override func viewDidAppear(_ animated: Bool) {

// Crash in AppDelegate ---- Error Thread 1: signal SIGABRT
tableView.scrollToRow(at: IndexPath(row: row, section: section), at: UITableView.ScrollPosition.top, animated: true)
}

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

func numberOfSections(in tableView: UITableView) -> Int {
return data.count
}


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

return cell
}

}

最佳答案

您想使用 IBOutlet myTable,而不是变量 tableView。因此,当您滚动到特定行时,将代码中的 tableView 替换为 myTable

myTable.scrollToRow(at: IndexPath(row: row, section: section), at: .top, animated: true)

还有cellForRowAt数据源方法

let cell = myTable.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

接下来,我在您的代码中看不到您设置了 myTable 的委托(delegate)和数据源。所以修复它:

override func viewDidLoad() {
super.viewDidLoad()
myTable.delegate = self
myTable.dataSource = self
}

关于swift - 无法滚动到 tableView 中某个部分的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53724463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com