UI笔记_视图控制器UIViewController

视图控制器UIViewController

每一个UIViewController都自带一个视图,并且负责这个视图的一切事物,包括模型层(Model)与显示层(View)之间的通信,检测设备的旋转,监控内存警报。

UIViewController是一个抽象类所有视图控制器的基类,如果要是用视图控制器就要创建一个它的子类。

当我们创建一个视图控制器的时候在它的.m文件中默认为我们添加了类的延展用以管理该类的私有属性和方法。

给window创建一个根视图控制器的步骤:

// 1.导入头文件MainViewController.h
// 2.在AppDelegate.m中创建一个UIViewController对象
MainViewController *mainVC = [MainViewController alloc] init];
// 3.将mainVC对象设置为window的根视图控制器
[self.window setRootViewController:mainVC];
// 4.释放mainVC对象
[mainVC release];

UIViewController和UIApplicationDelegate一样具有生命周期,并且有一系列类似的方法:

initWithNibName:bundle: // 指定初始化方法 数据的处理 写在这个方法里 MRC下 有数据处理的时候要记得在后面dealloc

viewDidLoad //视图加载之后被调用 只调用一次 一般的视图操作(添加视图,改变视图设置)都写在这里

didReceiveMemoryWarning // 接受到内存警告的时候调用

以上三个方法是在UIViewController子类创建的时候Xcode自动生成的


--------我是分隔线1--------

viewWillAppear // 视图将要出现的时候调用

viewDidAppear // 视图出现的时候调用

viewWillDisappear // 视图将要消失的时候调用

viewDidDisappear // 视图消失的时候调用


-------我是分割线2--------

另外 loadView // 同样,这个方法也只调用一次 

loadView在API中的注释:

- (void)loadView; // This is where subclasses should create their custom view hierarchy if they aren't using a nib. Should never be called directly.

对比viewDidLoad的注释:

- (void)viewDidLoad; // Called after the view has been loaded. For view controllers created in code, this is after -loadView. For view controllers unarchived from a nib, this is after the view is set.

不太理解loadView与viewDidLoad的区别,扩展阅读请戳这里:扩展阅读


-------我是分割线3--------

UIViewController本身可以检测屏幕旋转,如果需要处理屏幕旋转的事件同样需要重写几个方法

supportedInterfaceOrientations、willRotateToInterfaceOrientation:duration:(暂停音乐、关闭视图交互等)

willAnimateRotationToInterfaceOrientation:duration:(添加自定义动画等) didRotateFromInterfaceOrientation:(播放音乐、打开视图交互等)。

注意视图控制器会自动调整view的大小以适应屏幕旋转,触发view的layoutSubviews方法

除了控制屏幕旋转,还能检测内存警告,以便避免内存不够引起的crash


-------我是分割线4--------

在一个button的回调函数里定义另外一个UIViewController,创建对象后需要弹出新的View

弹出的方法 presentViewController:animated:completion:

// 参数1:需要弹出的UIViewController

// 参数2:是否需要动画效果

// 参数3:弹出执行完毕后,执行block里面的代码


注:UIViewController是整个iOS的核心

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值