UIView的几个问题

来源:互联网 发布:淘宝店最高等级是什么 编辑:程序博客网 时间:2024/04/30 13:56

总结这2天开发中发现的一些问题:

UIView不能实现为单例

我们的app中有几个页面,有一个共享的组件,似乎很适合用单例模式来实现。但是改成单例以后,发现一个奇怪的现象,从一个ViewController切换回来,那个单例的View组件就不显示了。在stackoverflow上搜索了一番,结论是UIView不应该实现为单例的,apple的文档里也说,这是一种反模式。所以最后改为每个View有一个单独的组件实例,在外部用一个单例的类来保存状态

一般不应该从View获取ViewController的引用

根据apple文档的描述,UIView最好对UIViewController的状态一无所知,如果需要交互的话,一般通过delegate来实现。

所以官方的API,UIViewController可以通过self.view拿到自己的view,而UIView就没有公开类似self.viewController这样的属性

如果一定需要的话,可以使用这个私有的API:

UIViewController *vc = self->_viewDelegate;

当然,由于众所周知的原因,强烈不建议这样做。如果确实需要在view里得到ViewController的话,可以设置一个实例变量,在init方法里赋值

UINavigationItem似乎没有subclassing的价值

今天费了半天劲,自定义一个UINavigationItem的子类,最后发现UIViewController的navigationItem属性是readonly的。。所以貌似UINavigationItem应该直接使用,不应该子类化

0 0
原创粉丝点击