【问题标题】:How can I know if a cell of UITableView is selected?如何知道是否选择了 UITableView 的单元格?
【发布时间】:2014-10-11 19:06:13
【问题描述】:

我正在使用 XCode 在 Swift 中编写一个应用程序。它包括一个UITableView。只有一个问题 - 在 Swift 中,我如何知道用户选择了哪个单元格?

澄清一下:

  1. 用户选择标签为“foo”的单元格
  2. 代码应返回“foo”或用户选择的任何内容

【问题讨论】:

  • 你试过下面的方法了吗?
  • @bllakjakk 谢谢!我有时间会尽快尝试。
  • @bllakjakk 它有效。谢谢。

标签: ios xcode uitableview swift


【解决方案1】:

假设您有相关单元格的 indexPath - 例如在您的任何 UITableViewDelegate 或 UITableViewDataSource 方法中,

BOOL selected = [tableView.indexPathsForSelectedRows containsObject:indexPath];

【讨论】:

    【解决方案2】:

    您可以通过在视图控制器中添加以下函数来判断用户选择了哪个单元格。

    class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    ...
    
    func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
        println("You selected cell #\(indexPath.row)!")
    }
    
    ...
    

    }

    所以现在取决于您是否有一个数组来显示每个单元格的文本名称。如果是,您可以使用此 indexPath.row 来检索用户选择的行的文本。

    class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
        var tableView : UITableView!
        var data:String[] = ["Cell 1","Cell 2","Cell 3","Cell 4"]
    
    
    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
            let cell : UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell
            cell.text = self.data[indexPath.row]
            return cell
        }
    
    func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
             println("SELECTED INDEX /(indexPath.row)")
             println("Selected Cell Text /(data[indexPath.row])")
    }
    

    【讨论】:

    • 不,你将函数添加到表视图委托中。
    • 请再次检查我的 UIViewController 定义。它已经实现了委托,因此定义了函数。
    • 但不是每个人都这样做。该函数与委托一起使用,而不是表视图。保持概念清晰很重要。
    • 我认为你应该检查一下苹果样本:developer.apple.com/library/ios/documentation/userexperience/…
    • 我并不是说您不能将委托(和数据源)与控制器结合起来。我的意思是,无论你如何组合它们,该函数在逻辑上都是委托的一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 2014-11-24
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多