【发布时间】:2018-01-12 11:26:31
【问题描述】:
我有一个视图控制器,里面有滚动视图,滚动视图有一个视图。因此,视图有很多按钮和标签,它们根据来自 api 的数据显示。按下后我有一个按钮,我想重新加载一个视图(它的内容)。
【问题讨论】:
我有一个视图控制器,里面有滚动视图,滚动视图有一个视图。因此,视图有很多按钮和标签,它们根据来自 api 的数据显示。按下后我有一个按钮,我想重新加载一个视图(它的内容)。
【问题讨论】:
一种简单的技巧,不推荐的方法是这样做
self.view.setNeedsLayout()
你也可以self.viewDidLoad() 或self.viewWillAppear(true)
您可以使用的不同推荐方法如下
代表团 KVO 通知
另一种方法是使用 tableView 和用户 reloadData()
代表团:https://www.andrewcbancroft.com/2015/04/08/how-delegation-works-a-swift-developer-guide
KVO:https://cocoacasts.com/key-value-observing-kvo-and-swift-3/
通知:http://dev.iachieved.it/iachievedit/notifications-and-userinfo-with-swift-3-0/
【讨论】:
self.view.setNeedsLayout() 添加到viewDidLoad() 或viewWillAppear() 并没有使我的屏幕刷新。如果这有什么不同,我会从模态返回 UIView。
最好和正确的方法是定义一个方法来布局每个按钮,告诉它是否应该隐藏或显示并更新它的框架。
最简单但丑陋的方法是使用:
self.viewToReload.setNeedsLayout()
self.viewToReload.layoutIfNeeded()
【讨论】: