如何知道是不是选择了 UITableView 的单元格?

Posted

技术标签:

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

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

澄清一下:

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

【问题讨论】:

你试过下面的方法了吗? @bllakjakk 谢谢!我有时间会尽快尝试。 @bllakjakk 它有效。谢谢。 【参考方案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/… 我并不是说您不能将委托(和数据源)与控制器结合起来。我的意思是,无论你如何组合它们,该函数在逻辑上都是委托的一部分。

以上是关于如何知道是不是选择了 UITableView 的单元格?的主要内容,如果未能解决你的问题,请参考以下文章

使用 UITableView 填充 UITabBar

如何在swift中一次只选择两个UITableview单元格

如何知道 uitableview 是不是有选定的单元格

两种形式的单选单选

从 uitableview 隐藏或删除部分

无法填充第二个 UITableView 控制器