当前位置: 首页 > 知识库问答 >
问题:

如何在单击UIViewTableCell时执行segue?

梁丘经艺
2023-03-14

当我单击一个UITableViewCell时,我在情节提要中已经有一个从UITableView到下一个视图控制器的切换?有人告诉我要使用'did selectrowat'功能,但似乎无法让它工作!

我试图访问的视图控制器被称为“VendorHome”,它来自的控制器被称为“Home controller”。如果有用的话,UITableView,UITableCellView和content UIView是无类的。

import UIKit
import Firebase

class HomeController: UIViewController, UITableViewDelegate, UITableViewDataSource {

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
    tableView.deselectRow(at: indexPath, animated: true)
    performSegue(withIdentifier: "HomeCellToVendorPage", sender: self)
}




func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return DataCellLabels.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
    let cell = HomeTableView.dequeueReusableCell(withIdentifier: "HomeCell", for: indexPath)
    as! HomeCell
    cell.UsernameLabel.text = DataCellLabels[indexPath.row].Title
    cell.DistanceLabel.text = DataCellLabels[indexPath.row].Distance
    cell.StarRatingLabel.text = DataCellLabels[indexPath.row].Rating
    cell.AvailabilityLabel.text = DataCellLabels[indexPath.row].Avaliability
    

    return cell
}

let db = Firestore.firestore()

var DataCellLabels: [CellLabel] = []

@IBOutlet weak var HomeTableView: UITableView!



override func viewDidLoad() {
    super.viewDidLoad()


    // Do any additional setup after loading the view.
    
    HomeTableView.dataSource = self
    
    
    HomeTableView.register(UINib(nibName: "HomeCell", bundle: nil), forCellReuseIdentifier: "HomeCell")
    
    LoadHomeCells()
}

func LoadHomeCells() {
    DataCellLabels = []
    
    db.collection("users").getDocuments { (QuerySnapshot, error) in
        if let e = error {
            print ("Error \(e)")
        } else {
            if let snapshotDocuments = QuerySnapshot?.documents {
                for doc in snapshotDocuments {
                    let data = doc.data()
                    if let CellTitle = data["Username"] as? String , let CellDistance = data["Distance"] as? String, let CellRating = data["Rating"] as? String, let CellAvaliability = data["Avaliability"] as? String {
                        let NewCell = CellLabel(Title: CellTitle, Distance: CellDistance, Rating: CellRating ,Avaliability: CellAvaliability)
                        self.DataCellLabels.append(NewCell)
                        
                        DispatchQueue.main.async {
                            self.HomeTableView.reloadData()
                        }
                    }
                }
            }
        }
    }
}

}

共有2个答案

周弘盛
2023-03-14

忘记添加委托:

HomeTableView.delegate = self
支洋
2023-03-14

看起来您只设置了数据源,您还需要设置表视图委托

HomeTableView.delegate = self

DidSelectroWatIndex是UITableViewDelegate方法,而不是datasource方法

 类似资料:
  • 问题内容: 对于我的wordpress网站php文件之一,我具有以下代码: 因此,它将把文件调用到该部分。 但是,我要使其仅在单击选项卡时执行或调用。 调用或执行该函数的jQuery是什么? 编辑: 因此,我想要实现的目标类似于Ajax。由于在单击选项卡之前不会调用该函数,因此浏览器不必调用不必要的文件并降低页面速度。 让我知道您是否认为这是最好的方法。 谢谢! 问题答案: 尽管拉斐尔(Rapha

  • 我有一个可拖动的元素,在它里面,我有一个带有onclick事件的组件。在拖动结束时,将触发单击事件。我的可拖动元素看起来像这样。我使用了一个名为react-draggable的包。 头盔组件内部有onClick事件,它会打开一个对话框。当我拖动并释放该元素时,将打开此对话框。我的问题是如何防止这种行为,以及如何将它们与事件分开? 谢谢

  • 我根据Android文档创建了以下DialogFragment: 公共类PayBillDialogFraank扩展DialogFraank{ 从另一个片段(列表片段)中,当单击列表中的一行时,应该打开DialogFraank,并且在按下DialogFraank的正按钮后,我希望能够删除ListFraank的选定行,并调用一个方法来执行与删除相关联的远程操作。我实现了ListFraank如下: 我不

  • 问题内容: 我有以下html元素: 我需要href属性,以便引导程序使用链接样式(颜色,光标)对元素进行样式设置。 问题是,如果现在单击该按钮,它将导致浏览器重定向。如何更新以上内容以不重定向浏览器onClick但仍然运行? 问题答案: 您应该像这样在 onClick* 事件中调用 preventDefault 函数: * 您可以针对自己的用例使用类似以下的内容:

  • 当一些更先进的技术强加他们的标准时,一件无聊的事情是必须与“双击”来执行一个动作有关。但是我正在寻找一种简单的方法来实现它,而不必重写代码一千次。 我想在我的项目中使用Kotlin实现。有人能帮我吗?提前谢谢 只是想知道:我想了解如何进行双击或防止用户进行双击

  • 我正在使用可点击的下拉菜单进行导航。下拉列表使用输入标记。我陷入困境的地方是,如果访问者单击页面上的其他地方,我需要关闭下拉列表。我正在尝试使用目标属性、matches()方法和onclick事件。 我在控制台中注意到的是,当我打开下拉列表时,两个条件语句都出现了,下拉列表没有打开。这就好像下拉列表同时打开和关闭。 我做错了什么?我如何让它正常工作,以便用户只需打开下拉菜单,并在单击网页上的其他位

  • 试图在用户删除数据时刷新页面。页面上的一些Html元素会自动更新,但主应用程序组件会保留旧数据,直到手动刷新页面。 不再像本例所示那样工作:如何在ionic 4中刷新页面 我尝试改用ngonit(),但没有成功。我也尝试过ChangeDetectorRef,但没有乐趣。 类型脚本 html 数据来自此。内容

  • 问题内容: 我一直在寻找如何执行此操作,但到目前为止我还没有找到任何相关的东西,:(我可以嵌套两个函数,但是我只是想知道这是否可行吗? 目前我的JS代码: 我想一键调用两个函数,如何在angularJS中做到这一点?我认为当您添加多个类时会像在CSS中那样直接…但是不是:( 问题答案: 您有2个选择: 创建包装这两个方法的第三个方法。这样做的好处是可以减少模板中的逻辑。 否则,如果要在ng-cli