如何在加载异步调用后重绘UIView?

时间:2018-02-05 21:17:33

标签: ios swift uiview

我有UIView这是UIViewController中的一个插座,在ViewController中我进行网络调用,调度到主队列并将下载的属性传递给视图。在视图中我认为我可以使用计算属性并调用setNeedsDisplay根据更新的属性重绘视图,但这不会发生?

class MyViewController {    
  @IBOutlet weak var myView: MyViewType! 

  func asyncCall() {
    DispatchQueue.main.async {
      myView.property = result 
    }
  }
}

class MyViewType: UIView {
  var property: [propertyType] = [] {
    didSet {
      setNeedsDisplay() 
    }
  }

  override func draw(_ rect: CGRect) { 
    //Drawing code using property
  }
}

1 个答案:

答案 0 :(得分:0)

我明白了,setneedsDisplay()被调用,但我正在对property进行一些额外的处理,即投射到Int,但使用的是lazy var。所以我在var asInt函数中移动了draw声明,现在它可以工作了。