ios - 从 ViewController 更新 UIView 的子视图
问题描述
我有一个UIViewController
实现自定义的UIView
,所以;
override func loadView() {
view = CustomView()
}
自定义视图有一些标签和按钮以及所有正常的东西,问题在于我的 viewController 我有一个请求,当该请求完成后,我想更新其中一些标签/按钮。
现在,在 my 中CustomView
,我有一些功能,例如;
func updateView() {
labelOne.isHidden = true
LabelTwo.isHidden = false
}
因此,当请求完成时,我会从我的 viewController 调用适当的函数。
这可行,但感觉不对,有没有一种更简洁的方法可以从我的 viewController 更新我的自定义 UIView 的子视图?我应该使用协议还是委托?
解决方案
过去我发现非常巧妙的一件事是将模型直接传递给自定义视图,然后使用didSet
它来触发更新。
class CustomView: UIView {
let labelOne = UILabel()
let labelTwo = UILabel()
var object:CustomObject! {
didSet {
self.labelOne.text = object.name
self.labelTwo.text = object.description
}
}
...
}
这意味着UIViewController
您可以执行请求,然后将模型直接传递给自定义视图。
RequestHelper.getObject() { object in
self.customView.object = object
}
显然,我在这里猜测您的请求和对象名称,但希望您能理解。
推荐阅读
- macos - Mac清除浏览器缓存的方法与PC不同?
- selenium - 如何关闭 Selenium 中的弹出窗口?
- java - 添加 Recyclerview 的 itemview 的总“视图”的最佳实践是什么?
- deep-learning - VGG16 预测中的随机性
- docker - 使用绝对导入访问 docker 容器内的文件
- python - 为什么这不打印任何东西?
- java - 无法在 statice 方法内的类中获取保存的 SharedPreferences 值
- sql - 如何将混合字符串格式化为数字
- mysql - 从早上 6 点到早上 6 点选择行
- java - 使用 Lombock 和构造函数注入 Spring 注入的 bean 为空