迅速添加可点击的表格视图

时间:2018-07-20 13:25:49

标签: swift uitableview uiviewcontroller

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

2 个答案:

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