- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个包含 UIActivityIndicatorView(微调器)的自定义 UITableViewCell,我尝试单击该单元格以便微调器开始设置动画。所以我尝试在 UITableViewController 中实现以下内容:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.dequeueReusableCellWithIdentifier("testcase", forIndexPath: indexPath) as TestCaseTableViewCell
cell.spinner.startAnimating()
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
我的 TestCaseTableViewCell(自定义单元格类)中有实例变量“spinner”:
@IBOutlet weak var spinner: UIActivityIndicatorView!
但是没有用......
我只想点击单元格,微调器开始动画,因为我想在此期间做一些事情。完成某些操作后,我可以在单元格中显示类似“OK”的内容(与微调器的相同位置)。我怎样才能做到这一点?
最佳答案
问题在于如何从 TableView 中检索单元格:dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath)
。当您需要显示新单元格时,此方法会向 UITableView
请求其重用缓存中的单元格,因此只能在 tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
TableView 数据源的方法。
要向 TableView 询问屏幕 单元格,请使用cellForRowAtIndexPath(indexPath: NSIndexPath)
。您的代码示例将变为:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if let cell = tableView.cellForRowAtIndexPath(indexPath) as? TestCaseTableViewCell {
cell.spinner.startAnimating()
}
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
关于ios - UITableViewCell 中的 UIActivityIndicatorView(微调器)无法通过 UITableViewController 快速启动动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29494655/
我是一名优秀的程序员,十分优秀!