iOS:无法在UITableViewCell中使用Activity Indicator

时间:2017-10-21 18:45:28

标签: ios swift uitableview

我希望RewriteCond %{REQUEST_URI} !^staticFolder/ RewriteRule ^(.*)$ staticFolder/anotherFolder/$1 [L,QSA] 位于每个ActivityIndicatorView内,并在点按后启动动画(以显示该动作正在进行中)。但我无法启动动画效果。

我将UITableViewCell添加到我的手机原型并通过ActivityIndicatorView连接。这是我用户选择表格行后开始动画的代码:

@IBOutlet

我还尝试添加func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let selectedAction = actions[indexPath.row] let cell = tableView.dequeueReusableCell(withIdentifier: "actionCell", for: indexPath) as! ActionTableViewCell cell.activityInProgressIndicator.startAnimating() } 的新实例作为cell.accessoryView。没有任何影响。

我还尝试通过ActivityIndicatorView(我希望避免)和tableView.reloadData()以及tableView.beginUpdates()

来更新单元格

理想情况下,应隐藏此旋转指示器,但在tableView.endUpdates()中设置.isHidden = false也不起作用。

2 个答案:

答案 0 :(得分:3)

只需替换

 let cell = tableView.dequeueReusableCell(withIdentifier: "actionCell",
 for: indexPath) as! ActionTableViewCell with below line

 let cell = tableView.cellForRow(at: indexPath) as! ActionTableViewCell.

希望它能起作用!!

答案 1 :(得分:2)

问题是,当您在ActionTableViewCell内使用tableView.dequeueReusableCell时,您正在创建didSelectRowAt的新实例,这是错误的。 你需要使用这样的东西:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    guard let cell = tableView.cellForRow(at: indexPath) as? ActionTableViewCell else { return }
    cell.activityInProgressIndicator.startAnimating()
}

这将解决您的问题。