在看项目组代码时发现,在使用UIViewController的时候,很多情况下直接将controller的view添加到view上面,不像传统的添加子视图类——addChildViewController
。对于这种情况下视图关系感觉有点混乱,之前看的资料一般可以将Controller作为子controller添加到视图当中,然后再把view加进来。但这次发现并没有使用子视图,只是单纯的将view添加进来。这种用法并不知道规不规范,对于其事件的传传导也比较好奇,于是写了一个比较简单的demo,仿制项目的使用场景。
UINavigationController当中有一个UIViewControllerA作为根视图器,UINavigationController其中会push VCB。但UINavigationController并不是作为子Controller添加到UIViewControllerXXX当中,而是将UINavigationController.view添加进来而已。这就导致了事件传送的进制比较奇怪。为了测试这种使用方法,特地写了一个demo。如下图所示:
屏幕快照 2017-08-17 下午10.54.36.png将NavigationViewContrller的view直接添加到view当中。然后在NavigationControler当中push视图。
在测试的过程中也发现了几个要注意的地方:
- 刚开始的时候发现,push跟exit按钮点了没有反应。后来发现原来Controller被释放了,因为只是view被添加到了视图当中,Controller没有被添加,其是一个局部变量,导致其在之后立即被释放,当触发按钮事件时,自然就没有反应了。
下面是demo的地址:https://github.com/tornador92/TestSubView
网友评论