gpt4 book ai didi

ios - 使用外部类更改 tableView touch 上的 View Controller

转载 作者:行者123 更新时间:2023-11-28 07:47:20 26 4
gpt4 key购买 nike

我正在使用 Swift 开发一个 iOS 应用程序,我想知道如何在用户触摸单元格时更改 View Controller 。我用谷歌搜索了很多,但找不到任何东西。

我的代码:

class ViewControllerMain: UIViewController {

@IBOutlet weak var tableView: UITableView!

let customTableView = CustomTableView()

override func viewDidLoad() {
super.viewDidLoad()
self.customTableView.tableData = ["item 1", "item 2", "item3"]
self.tableView.delegate = self.customTableView
self.tableView.dataSource = self.customTableView
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

}

然后:

class CustomTableView: UITableViewController {

// I omitted a lot of overrides that are not useful for this question.

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)

// Here I would like to redirect the user to another view controller, let's say "ExampleViewController".

}

}

有没有办法在 ViewControllerMain 中指定在单元格被触摸时必须显示的 View Controller ?如果没有,我如何直接从 CustomTableView 重定向用户?谢谢。

最佳答案

您可以使 Controller CustomTableView 成为其 View 的数据源和委托(delegate)。这意味着将 TableView 的模型,一个数组:["item 1", "item 2", "item3"] 移动到 TableView Controller ,CustomTableView . (另外,我重命名了它; Controller 不应命名为“...View”。):

class CustomTableTableViewController: UITableViewController {
let examples = ["item 1", "item 2", "item3"]

override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {

return 1
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let exampleViewController = storyboard?.instantiateViewController(withIdentifier: "AstoryboardSceneID")
navigationController?.pushViewController(exampleViewController!, animated: true)
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return examples.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let example = examples[indexPath.row]
cell.textLabel?.text = example

return cell
}

您必须在 Interface Builder 中设置标识符,如下所示:

Setting view controller identifier

关于ios - 使用外部类更改 tableView touch 上的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50668374/

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