创建表格视图时,无法单击放在表格视图中的任何项目。我想知道如何创建一个可以单击每个项目的表格视图,并且当用户单击某个项目(例如,说一个城市名称)时,它将用户重定向到另一个视图控制器。 (例如,如果表视图中有22个可点击的项目,则总共将有22个新的不同的视图控制器) 提前非常感谢您!
答案 0 :(得分:0)
UITableViewDataSource必须包含三个主要功能,表格视图才能与用户交互正常工作(例如,按每一行)。这些功能是:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
您要使用的功能是第三个功能。当用户通过在屏幕上点击某个特定行来选择该行时,将调用它。您可以使用“ indexPath”找出行索引。
如果您想使用22个不同的视图控制器,则需要在每个视图控制器之间创建一个手动设置,并相应地标记它们。然后,您将要根据在第三个函数中选择哪一行来调用每个单独的segue!您可以使用performSegue()函数调用带有标识符的segue。
请注意,包含这些函数的类的类型必须为UITableViewDataSource,您应该像这样告诉表视图它是ViewDidLoad()函数中的数据源:
tableView.dataSource = self
答案 1 :(得分:0)
简单的代码如下所示:
import UIKit
class viewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var identifiers = [String]()
override func viewDidLoad() {
// fill your identifiers here
tableView.delegate = self
tableView.dataSource = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return 22
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCell(withIdentifier: "yourCellIdentifier") as! yourCell
// fill your cell's data in here
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
// here you can use someThing like an array of your segue identifiers
self.performSegue(withIdentifier: identifiers[indexPath.row], sender: self)
//Or you can just implement a switch with every case doing what you want that cell to do which i don't recommend if you have 22 rows
}
}