2016-06-01 6 views
1

私はモデルの拡張で計算されたプロパティとしてUIActivityIndi​​catorViewを宣言しました。私は、私はimageViewのサブビューとして活動インジケータを使用しようとしているメソッドconfigureCellを持っています。ここでは、特定の条件でインジケータを配置することはできますが、後でそれを変更することはできません。たとえば、私はアクティビティインジケータを停止できません。色を変更することはできず、隠すこともできません。条件が満たされた後すぐに活動インジケータを停止する方法はありますか?

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 
     } 
    } 
} 

答えて

6

計算された変数としてactivityINを定義しました。あなたがそれを呼び出すときはいつでも、あなたは全く新しいインスタンスを取得します。 UIActivityIndicatorViewの簡略化初期設定では、activityIN varを見てください。

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 
     } 
    } 
} 

をしかし、通常、あなたは、この初期化子から取得インスタンスへの参照を維持する必要があります:あなたはわずか10秒のための活動が必要な場合は、このようなあなたのFUNCを編集します。 TransactionCellクラスに格納されているプロパティをUIActivityIndicatorViewに定義します。

TransactionCellクラスが宣言

var cellActivityIndicator: UIActivityIndicatorView! 

を持っている、あなたはの@Shadowこの

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 
     } 
    } 
} 
+0

おかげのようなあなたのFUNCを編集することができているとします。 –

関連する問題