func tableview didSelectRowAtIndexPath 未被调用[重复]

Posted

技术标签:

【中文标题】func tableview didSelectRowAtIndexPath 未被调用[重复]【英文标题】:func tableview didSelectRowAtIndexPath is not called [duplicate] 【发布时间】:2017-04-11 21:50:30 【问题描述】:

当用户单击单元格时我试图调用viewModel.userDidSelectItem(identifier: "DetailMainViewController") 函数但我无法调用,首先print(indexPath.row) 为零,其次我不知道它是否正确调用。

import Foundation
import UIKit

class MainViewController: UIViewController, UITableViewDataSource 

    @IBOutlet var tableview:UITableView!
    var viewModel: MainViewModel = MainViewModel()

    override func viewDidLoad() 
        super.viewDidLoad()
        viewModel.loadUsers 
            self.tableview?.reloadData()
        
    

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return viewModel.fakeUsers?.count ?? 0
    

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->UITableViewCell 
        let cell = tableView.dequeueReusableCell(withIdentifier: "fakeUserObjectCell") as! MainTableViewCell
        cell.fakeUserObject = viewModel.fakeUsers?[(indexPath as NSIndexPath).row]
        return cell
    

    func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 

       print(indexPath.row)
       viewModel.userDidSelectItem(identifier: "DetailMainViewController")
    

【问题讨论】:

【参考方案1】:

当您使用 tableview 时,您需要将 UITableViewDataSourceUITableViewDelegate 设置为 MainViewController。 并覆盖下面的函数

func numberOfSections(in tableView: UITableView) -> Int 
    return 1

【讨论】:

你不需要覆盖numberOfSections(:) 如果这与问题有关,则不会有任何单元格可供选择。

以上是关于func tableview didSelectRowAtIndexPath 未被调用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Xcode 不执行 func tableView 中的代码?

func tableview didSelectRowAtIndexPath 未被调用[重复]

Receiver () 没有标识符为“secondViewControllerSegue”的segue

动画在具有动态单元格高度的单元格中添加子视图

像刷新一样重新加载tableview视图

如果在tableview中选中复选框,如何保存所选数组