2016-06-01 5 views
1

내 모델의 확장에서 계산 된 속성으로 UIActivityIndicatorView를 선언했습니다. 나는 configureCell 메서드를 가지고 있는데 여기서는 activity indicator를 imageView의 서브 뷰로 사용하려고한다. 여기서 특정 조건에 표시기를 배치 할 수 있지만 나중에 변경할 수는 없습니다. 예 : 활동 표시기를 중지 할 수 없으며 색상을 변경할 수 없으며 숨길 수는 없습니다.조건이 충족 된 후 신속하게 활동 표시기를 중지하는 방법은 무엇입니까?

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을 살펴보십시오. 10 초 동안 작업 만 필요한 경우 다음과 같이 기능을 편집하십시오.

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 클래스에 저장된 속성을 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를 편집 할 수 있다고 가정한다. –