gpt4 book ai didi

ios - 满足条件后如何 swift 停止事件指示器?

转载 作者:搜寻专家 更新时间:2023-11-01 05:53:32 25 4
gpt4 key购买 nike

我已将 UIActivityIndi​​catorView 声明为模型扩展中的计算属性。我有一个方法 configureCell,我试图将事件指示器用作 imageView 的 subview 。在这里,我可以将指标定位在特定条件下,但以后无法对其进行任何更改。例如,我无法停止事件指示器,无法更改颜色,甚至无法隐藏它。

extension TranscationModel: UITableViewDataSource, UITableViewDelegate
{

var activityIN: UIActivityIndicatorView {
var act = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
act.color = UIColor.redColor()
act.hidden = false
act.startAnimating()
return act
}

func configureTransactionCell(cell : TransactionCell?, indexPath: NSIndexPath) {
if transaction.tid == "Something" {
activityIN.color = UIColor.greenColor() //Even this doesn't work
activityIN.center = cell.imgTransactionBill.center
cell.imgTransactionBill.addSubview(activityIN)
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(10 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
activityIN.stopAnimating() //Not working
activityIN.hidden = true //Not working
}
}
}

最佳答案

您将 activityIN 定义为计算变量。任何时候调用它,都会得到全新的实例。查看 activityIN var 作为 UIActivityIndi​​catorView 的便利初始值设定项。如果您只需要十秒钟的事件,请像这样编辑您的功能:

func configureTransactionCell(cell : TransactionCell?, indexPath: NSIndexPath) {
if transaction.tid == "Something" {
let weakActivityIndicator = activityIN
weakActivityIndicator.color = UIColor.greenColor()
weakActivityIndicator.center = cell.imgTransactionBill.center
cell.imgTransactionBill.addSubview(weakActivityIndicator)
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(10 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
weakActivityIndicator.stopAnimating()
weakActivityIndicator.hidden = true
}
}
}

但通常您需要保留对从该初始化程序获得的实例的引用。在您的 TransactionCell 类中定义 UIActivityIndi​​catorView 存储属性。

假设 TransactionCell 类有声明

var cellActivityIndicator: UIActivityIndicatorView!

然后你可以像这样编辑你的函数

func configureTransactionCell(cell : TransactionCell?, indexPath: NSIndexPath) {
if transaction.tid == "Something" {
cell.cellActivityIndicator = activityIN
cell.cellActivityIndicator.color = UIColor.greenColor()
cell.cellActivityIndicator.center = cell.imgTransactionBill.center
cell.imgTransactionBill.addSubview(cell.cellActivityIndicator)
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(10 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
cell.cellActivityIndicator.stopAnimating()
cell.cellActivityIndicator.hidden = true
}
}
}

关于ios - 满足条件后如何 swift 停止事件指示器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37561732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com