UITableViewCell 中的 UIActivityIndicatorView(微调器)无法通过 swift 中的 UITableViewController 启动动画
UIActivityIndicatorView (spinner) in UITableViewCell cannot start animating by UITableViewController in swift
我有一个包含 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(自定义单元格 class)中有实例变量 "spinner":
@IBOutlet weak var spinner: UIActivityIndicatorView!
但是没有用......
我只想点击单元格,微调器开始动画,因为我想在此期间做一些事情。完成某些操作后,我可以在单元格中显示类似 "OK" 的内容(与微调器的相同位置)。我怎样才能做到这一点?
另一个简单的方法:
- Select 您的 UIActivityIndicatorView 并在 属性检查器
中检查 "Animating"
- 勾选"hidden"
现在这样做:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.dequeueReusableCellWithIdentifier("testcase", forIndexPath: indexPath) as TestCaseTableViewCell
cell.spinner.hidden = false // <== Here
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
如果需要,不要忘记隐藏未隐藏的 UIActivityIndicatorView ;)
问题在于您如何从 table 视图中检索您的单元格:dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath)
。当您需要显示新单元格时,此方法会向 UITableView
请求其重用缓存中的单元格,因此只能在 table 视图数据源的 tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
方法中使用。
要向 table 视图询问 屏幕上 单元格,请使用 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)
}
我有一个包含 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(自定义单元格 class)中有实例变量 "spinner":
@IBOutlet weak var spinner: UIActivityIndicatorView!
但是没有用......
我只想点击单元格,微调器开始动画,因为我想在此期间做一些事情。完成某些操作后,我可以在单元格中显示类似 "OK" 的内容(与微调器的相同位置)。我怎样才能做到这一点?
另一个简单的方法:
- Select 您的 UIActivityIndicatorView 并在 属性检查器 中检查 "Animating"
- 勾选"hidden"
现在这样做:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let cell = tableView.dequeueReusableCellWithIdentifier("testcase", forIndexPath: indexPath) as TestCaseTableViewCell cell.spinner.hidden = false // <== Here tableView.deselectRowAtIndexPath(indexPath, animated: true) }
如果需要,不要忘记隐藏未隐藏的 UIActivityIndicatorView ;)
问题在于您如何从 table 视图中检索您的单元格:dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath)
。当您需要显示新单元格时,此方法会向 UITableView
请求其重用缓存中的单元格,因此只能在 table 视图数据源的 tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
方法中使用。
要向 table 视图询问 屏幕上 单元格,请使用 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)
}