我正在使用Swift开发iOS应用程序,我想知道如何在用户触摸单元格时更改视图控制器。我google了很多但我找不到任何东西。
我的代码:
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
中指定在触摸单元格时必须显示的视图控制器?如果没有,我如何直接从CustomTableView
重定向用户?感谢。
答案 0 :(得分:0)
您可以使控制器CustomTableView成为其视图的数据源和委托。这意味着将表格视图的模型(["item 1", "item 2", "item3"]
)移动到表视图控制器CustomTableView
。 (另外,我重命名了;控制器不应该命名为“...查看”。):
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中设置标识符,如下所示: