我正在处理从服务器下载JSON数据的应用程序,然后将其显示在UIView上。视图确实更新,只需大约15秒。我已经测试过以确保下载不会延迟更新,如果我在添加数据时更改了视图的背景颜色,它也会等待更新。我是否正确地认为这是不更新的观点,还是其他的东西?如何强制视图更新?感谢。
var newView = CustomView(product: products[0],descriptive: false)
contentView.addSubview(newView)
let backHeight = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Height, multiplier: 0.2, constant: 0)
let backWidth = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: contentView, attribute: NSLayoutAttribute.Width, multiplier: 1, constant: 0)
let backXPosition = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: contentView, attribute: NSLayoutAttribute.Left, multiplier: 1, constant:0 )
let backYPosition = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: colorLabel, attribute: NSLayoutAttribute.Bottom, multiplier: 1.0, constant: 0)
view.addConstraints([backHeight,backWidth,backXPosition,backYPosition])
这就是我将项目添加到视图中的方式。
答案 0 :(得分:4)
您是否有在视图中显示数据的代码示例?
您可以通过调用
来触发视图更新view.setNeedsDisplay() //Updates any drawing, including that in drawRect()
和
view.setNeedsLayout() //Triggers layoutSubviews()
但我不认为其中任何一个都会有所帮助,就好像你要添加他们应该出现的新视图而不会调用它们一样。除非你在Dharmesh建议的其他线程上。
确保您将视图添加到父级,并确保您正在为它们设置框架,就像它们是标签一样,如果没有设置框架,它们可能不会显示。
答案 1 :(得分:1)
当您从服务器获取数据时,您可以使用主队列将UI更新为视图,如下面的代码所示:
dispatch_async(dispatch_get_main_queue()) {
//Update your UI here
}