首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS / UIViewController中的UIViewController常量

iOS / UIViewController中的UIViewController常量
EN

Stack Overflow用户
提问于 2018-11-25 10:11:32
回答 2查看 239关注 0票数 1

假设我有一个我的控制器用于询问某些数据或功能的视图模型,当我实例化一次时,该视图模型将永远不会改变,对吗?但是,考虑到我用perform导航的控制器,等等,我无法访问初始化器,所以我不能使用这样的东西:

代码语言:javascript
复制
let myViewModel: MyViewModel

然后我不得不用它来代替:

代码语言:javascript
复制
var myViewModel: MyViewModel!

我对此没有很好的感觉,有人能提出一个好的解决方案吗?( tnx配偶:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-25 10:16:55

这很好,对你的IBOutlets也一样。从实例化ViewController到建立模型的那一刻起,它的值就是nil。这意味着即使您没有在ViewController的生命周期中改变它,它也不是一个常量。

票数 1
EN

Stack Overflow用户

发布于 2018-11-25 10:29:23

当从情节提要加载视图控制器时,您无法控制初始化(因为控制器不是由您初始化的),因此您无法做任何其他事情。其他选择也是相似的,两者都没有真正的优势。这是一个主观的决定:

可以将变量声明为普通可选变量。

代码语言:javascript
复制
var myViewModel: MyViewModel?

但是,如果控制器真的不能在没有设置数据的情况下工作,我更愿意自己使用!,因为不设置数据模型应该是一个致命的错误。

在某些情况下,您也可以使用默认值,例如:

代码语言:javascript
复制
var myViewModel = MyViewModel()

我的数据设置程序通常如下所示:

代码语言:javascript
复制
var model: Model! {
   didSet {
       loadViewIfNeeded() // to force view be loaded and viewDidLoad called
       updateUI() // set UI values from the data model     
   }   
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53466485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档