IBOutlet属性为什么定义在viewcontrol下而不是view control的view下?

iOS 码拜 4年前 (2016-01-30) 259次浏览
开发中,一般都是从IB中控件拖向代码,例如有一个label,一般是拖向viewcontrol的一个扩展里,作为一个属性
,这个label控件本来不应是在视图下吗,为什么在viewcontrol下了,
按mvc来说,应该是view和view互相嵌套
解决方案:30分
你有没有想过为什么要用 IBOutlet?不用 IBOutlet 会怎么?
其实你的 Label 不用 IBOutlet 同样会在界面上显示,原因是它会被创建,然后被添加到 ViewController 的 view 上,但是这种情况下你想访问这个 Label 的话怎么办?遍历 view 的 subviews 并不能方便你找到一个实例,除此之外就只能用 tag 了,但是同样不是很优雅的解决方案,所以苹果才用 IBOutlet 在 ViewController(或 View) 上加一个属性,指向你在 IB 上创建的对象,这样你就能很方便地在运行时修改这个对象,这和 MVC 没有任何关系。
解决方案:10分
这个拖动并没有改变控件本来的位置,只是存下了控件的指针,在控制器中可以直接使用而不用再去寻找或遍历了.

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明IBOutlet属性为什么定义在viewcontrol下而不是view control的view下?
喜欢 (0)
[1034331897@qq.com]
分享 (0)