如何解决如何在iOS中重新加载UiView?
我想重新加载UiView中存在的数据。 我经常使用此代码重新加载tableview中存在的数据:
tableview.reloadData
有什么方法可以像tableView一样在uiView中重新加载数据吗?
解决方法
这取决于。可能显示大量数据(例如a = np.array([[1,3],[2,5],[1,2],1],6]])
b = np.array([[3,2]])
check = any(x in b for x in a)
或UITableView
)的典型“复杂”视图使用数据源协议,该协议允许它们按需获取数据。在这种情况下,您需要通知视图新的/修改的数据可用,因此调用UIPickerView
。然后,视图将要求数据源提供要显示的数据。
原始视图(例如reloadData
)仅提供您需要设置/更新的属性(例如UILabel
),然后视图将重新显示数据。
您需要添加{tracking_code}
来重新加载视图或调用layoutIfNeeded
setNeedsLayout
,
我想在这里介绍View Drawing Cycle
。
UIView类使用
on-demand drawing model
来呈现内容。当视图first
出现在屏幕上时,系统要求它显示draw its content
。系统captures a snapshot of this content
并使用该快照作为视图的视觉表示。如果您从不更改视图的内容,则可能永远不会再次调用视图的绘图代码。对于涉及视图的大多数操作,快照图像为reused
。如果确实更改了内容,则notify
invalidate the view
视图已更改的系统。然后,该视图重复绘制视图并捕获新结果的快照的过程。
当视图的内容更改时,您不会直接重绘这些更改。相反,您使用setNeedsDisplay
或setNeedsDisplayInRect:
方法setNeedsDisplay()
。这些方法告诉系统视图的内容已更改,需要在下一个机会重新绘制。在启动任何绘图操作之前,系统将一直等到当前运行循环结束。此延迟使您有机会一次使多个视图无效,从层次结构中添加或删除视图,隐藏视图,调整视图大小以及重新放置视图。然后,您所做的所有更改都会同时反映出来。
如果为视图更改了这些properties,则不必触发setNeedsDisplay(_:)
或setNeedsDisplay()
。如果确实要在某些情况下这样做,可以始终通过调用setNeedsDisplay(_:)
或{{1}}方法来强制重画视图的内容。
您可以尝试:
self.tableView.reloadData() 要么 tableView?.reloadData()
,我认为您正在从服务器获取JSON数据,这是一个异步任务,并且您正在服务器响应之前就在标签中设置了数据,这看起来好像标签中没有填充数据。服务器响应您后,使用escaping closure更新标签中的数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。