点击图片查看大图

2017-01-02  本文已影响0人  行知2016
  1. 用ViewController实现一个弹窗,presentViewController来弹出窗口
  1. @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

上一篇下一篇

猜你喜欢

热点阅读