Swift添加了可点击的表视图



当我创建一个表视图时,我不能点击我放在表视图上的任何项目。我想知道如何创建一个每个项目都可以点击的表视图,当用户点击一个项目(例如城市名称(时,它会将用户重定向到不同的视图控制器。(例如,如果表视图中有22个可单击项目,则总共会有22个新的不同视图控制器(提前非常感谢!

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

以下是简单代码的样子:

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 
}
}

相关内容

  • 没有找到相关文章

最新更新