演讲稿 范文,冷酷少爷唯爱我,桃色香居
苹果官方有一句话说的非常好:当控制器的view互为父子关系,那么控制器最好也互为父子关系
我之前有一篇说控制器view的显示里边我说了一个很严重的问题,就是当控制的view还在,但是控制器不在了,造成了数据无法显示的问题,所以我们就要想办法保住控制器的命。那么我们今天继续来看一下,如何保住控制器的命。
@interface zyviewcontroller () - (ibaction)vc1; @property (nonatomic, strong) zyoneviewcontroller *one; @end @implementation zyviewcontroller - (zyoneviewcontroller *)one { if (!_one) { self.one = [[zyoneviewcontroller alloc] init]; self.one.view.frame = cgrectmake(10, 70, 300, 300); } return _one; } - (void)viewdidload { [super viewdidload]; } - (void)willrotatetointerfaceorientation:(uiinterfaceorientation)tointerfaceorientation duration:(nstimeinterval)duration { nslog(@"willrotatetointerfaceorientation"); } - (void)didrotatefrominterfaceorientation:(uiinterfaceorientation)frominterfaceorientation { nslog(@"didrotatefrominterfaceorientation"); } - (ibaction)vc1 { [self.view addsubview:self.one.view]; }
这里,我们先通过懒加载一个zyoneviewcontroller,然后用一个属性对他强引用,保护他的命。然后我们监听zyviewcontroller的屏幕旋转事件。接下来我们在zyoneviewcontroller中也监听一下屏幕旋转事件:
@implementation zyoneviewcontroller - (void)willrotatetointerfaceorientation:(uiinterfaceorientation)tointerfaceorientation duration:(nstimeinterval)duration { nslog(@"zyoneviewcontroller--willrotatetointerfaceorientation"); } - (void)didrotatefrominterfaceorientation:(uiinterfaceorientation)frominterfaceorientation { nslog(@"zyoneviewcontroller--didrotatefrominterfaceorientation"); } - (ibaction)onebtnclick { nslog(@"onebtnclick"); }
然后我们看一下打印的屏幕旋转 ,打印的结果:
可以很明显的看出来,这当zyviewcontroller控制旋转的时候,zyoneviewcontroller控件并不知道。因为他们控制器之间,不是父子关系,那么不是父子关系,zyviewcontroller控制器旋转,凭什么告诉zyoneviewcontroller控制器,对吧。
那现在我们让他们成为父子关系,然后看一下结果:
@implementation zyviewcontroller - (zyoneviewcontroller *)one { if (!_one) { self.one = [[zyoneviewcontroller alloc] init]; self.one.view.frame = cgrectmake(10, 70, 300, 300); [self addchildviewcontroller:self.one]; } return _one; }
然后我们看一下旋转的结果:
所以我们要记得,当控制器的view互为父子关系,那么控制器最好也互为父子关系
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论