创建单元格时手动调用didDeselectRowAtIndexPath

时间:2016-06-23 21:24:54

标签: ios iphone swift uitableview didselectrowatindexpath

我在UITableView内有UIViewController,而UIViewControllerdelegate的{​​{1}}。在我的表视图中,我输出的变量数量的行具有可变数量的行。无论何时选择任何单元格,都需要在其旁边显示一个复选标记(当前正在工作)。但是,创建单元格时,特定部分旁边需要复选框。

为了解释这个问题,我有一个包含标题,数据和标志的数组。

这是我的数组,它指定了UITableView

staticFlag

以下是我添加复选框的方法:

{arrayOfHeadersAndData.append((/// arrray stuff in a tuple ///,staticFlag: 0))}

以下是我尝试在具有func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { tableView.cellForRowAtIndexPath(indexPath)?.accessoryType = UITableViewCellAccessoryType.Checkmark }

的部分添加复选框的方法
staticFlag=0=

我当前的错误是

  

“无法调用非函数类型if arrayOfHeadersAndData[indexPath.section].staticFlag == 0 { tableView(tableViewOfCurrentItems, didSelectRowAtIndexPath: indexPath) }

的值

3 个答案:

答案 0 :(得分:2)

tableView:didSelectRowAtIndexPath:UITableViewDelegate方法,需要在UITableViewDelegate个实例上调用,例如self.tableView(tableViewOfCurrentItems, didSelectRowAtIndexPath: indexPath)tableView.delegate?.tableView(tableViewOfCurrentItems, didSelectRowAtIndexPath: indexPath)

您可以致电didSelectRowAtIndexPath来应用此更改,这似乎很奇怪。这听起来像委托正在规定表视图单元格外观的细节。相反,您可以完全在自定义UITableViewCell子类中实现此复选标记的显示,并让它管理隐藏或显示复选标记以响应它的selected属性和setSelected:animated:方法。然后,您可以在准备预选的单元格时调用cell.selected = true。这种方法还允许您在单元格类上实现prepareForReuse,以便在重用单元格之前根据需要清除选择状态,并避免在其他行上无意中显示这些复选标记。

答案 1 :(得分:1)

因为您将方法作为函数调用。第二件事是你试图从表视图调用方法,但据我所知,这是委托方法(你的控制器是委托)。所以你需要像这样打电话:

IReadOnlyCollectio<T>

答案 2 :(得分:0)

稍微改变设置。如果您有一系列需要检查标记的索引(看起来是arrayOfHeadersAndData),那么您需要在cellForRowAtIndexPath方法中设置复选标记。

您需要在添加新单元格时重新加载。您的新单元格将调用cellForRowAtIndexPath并添加复选标记。所以..

  1. cellForRowAtIndexPath中,您将针对arrayOfHeadersAndData检查单元格。如果他们在特定部分,请给他们一个复选标记
  2. 仅使用tableView.reloadSections(NSIndexSet(index: your_section_number), withRowAnimation: .None)
  3. 重新加载该部分