我在UITableView
内有UIViewController
,而UIViewController
是delegate
的{{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) }
答案 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
并添加复选标记。所以..
cellForRowAtIndexPath
中,您将针对arrayOfHeadersAndData
检查单元格。如果他们在特定部分,请给他们一个复选标记tableView.reloadSections(NSIndexSet(index: your_section_number), withRowAnimation: .None)