- 用ViewController实现一个弹窗,presentViewController来弹出窗口
- @interface BNRImagePreviewController,包含一个 UIImageView 来展示大图
Step 1:
声明了一个 BNRImagePreviewController,给它创建了一个xib,
拖了一个 UIImageView 上去,设置了约束。
Step 2:
首先想在 Cell 的 ThumbNailView 的 tap 事件响应里面去 prsentViewController,
发现不行,View不能直接presentViewController或者pushViewController
Step 3:
为了解决这个问题,声明了一个委托,让 TableViewController 来展示 BNRImagePreviewController。
Step 4:
Preview ViewController 展示出来了,但是图像没有展示出来。
Step 5:
发现原因是在创建 ViewController 之后,马上给 controller 的 imageview 赋值是不行的
vc.imageView.image = image;
这个时候imageView还是nil
Step 6:
解决办法是给 ViewController 增加了一个 UIImage 的属性来存放要展示的图像,
在viewDidLoad里面给imageView.image赋值
问题解决了,但根本原因是什么?这里要对 View Controller 的创建流程有更深入的了解。
View Controller 的生命周期
- init
- initWithNibName
View Controller 被创建了,数据进行了初始化,但 view 还是 nil
- loadView
- viewDidLoad
view 被加载起来了,在这里可以替换成自定义的 View
- viewWillAppear
view 即将被显示,已经有了bounds,但还没有被加到了 superview 中,可以对View的外观进行调节
- viewDidAppear
view 被显示了,已经被加到了 superview 中,有了 frame
- viewWillDisappear
- viewDidDisappear
- viewDidUnload
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。