iOS应用开发基础(一)基础知识

本文可能涉及很多零碎的知识点,其中包括IOS应用开发的相关基础知识。以后会针对每个条目在进行深入研究,这里只是先做一个相关知识的概述总结。



MVC模式

Modal组件:如果数据较多的话,可以考虑使用CoreData模型来构建
View:控件
Contorller:通常用oc类来充当。大部分都会继承UIKit的UIViewController基类,从而获取大量的基类功能;

iOS创建运行过程及相关方法:


没有storyboard中的创建过程:
先执行Main函数,执行UIApplicationMain(),根据其第三个和第四个参数创建Application,创建代理,并且把代理设置给application,开启一个事件循环,当程序加载完毕,他会调用代理的didFinishLaunchingWithOptions:方法。在该方法中,会创建一个UIWindow,然后创建一个控制器,并把该控制器设置为UIWindow的根控制器,接下来再将window显示出来,即看到了运行后显示的界面。

有storyboard中的创建过程:
先执行Main函数,执行UIApplicationMain(),根据其第三个和第四个参数创建Application,创建代理,并且把代理设置给application,根据项目配置文件info.plist里面的storyboard的name,找到对应的storyboard,接下来创建一个window,之后创建它的初始化控制器(就是箭头所指向的控制器),自动把该控制器设置为UIWindow的根控制器,接下来再将window显示出来,即看到了运行后显示的界面。

【UIWindow是特殊的UIView,通常一个App只会有一个UIWindow;UIWindow是创建的第一个视图控件(创建的第一个对象是UIApplication);】


UIwindow:
1.主窗口和此窗口[self.window makekeyandvisible] [self.window makekeywindow]
2.获取UIWindow
(1) [UIApplication sharedApplication].windows这样就可以接触到任何一个UIView对象了。
(2)[UIApplication sharedApplication].keyWindow(获取应用程序的主窗口)用来接受键盘和非触摸式消息事件的UIWindow,而且每时每刻只有一个UIWindow是keyWindow
如果某个UIWindow内部的文本框不能输入文字,可能是因为这个UIWindow不是keyWindow
(3)view.window获得某个UIView所在的UIWindow

将View添加到UIWindow有两种方法:
(1)直接将控制器的view添加到UIWindow中,并不会理会它对应的控制器;
[self.window addsubview:vc.view];
(2)设置UIWindow的根控制器,自动将rootViewController的View添加到UIWindow中,负责管理rootViewController的生命周期
[self.window.rootViewController = vc];
建议使用方法(2);

iOS控件相关

IOS所有控件都继承UIView,而且UIView继承了UIResponder基类,UIResponder代表用户操作的响应者。

UI大致分为三类:
1.活动控件:大部分继承了UIControl基类;当用户操作时,该控件可以激发相应的事件,该事件就会激发控件上为该事件绑定的处理方法;
2.静态控件:只继承UIView,不继承UIControl。
3.被动控件:可以接受用户操作,通常是输入,直到用户输入完成为止,他们不会触发IBAction方法。典型的是文本框,接受用户输入,但不触发任何方法;

自定义UI控件:
首先要继承View基类,然后重写View类的一个或多个方法,通常被重写的方法如下:
1.initWithFrame:
2.initWithCoder:程序在nib文件中加载完该控件后会自动初始化.
3.drawRect:自行绘制该控件的内容;
4.layoutSubviews:进行更加精准的布局控制;
5.didAddSubview:控件添加子控件完成时,会激发该方法;
6.willRemoveSubView:控件移除子控件时,激发该方法;
7.willMoveToSuperview:当控件添加到父控件时,激发该方法;
8.willMoveToWindow:当控件添加到窗口时,激发该方法;
9.touchesBegin:withEvent:开始接触该控件,激发该方法;
10.touchesMoved:withEvent:……
11.toiuchesEnded:withEvent:……

事件处理的三种方式:
1.通过IBAction绑定,将控件的特定事件绑定到控制器的selector,该控件发生此事件时,会触发控制器的对应方法;(通过界面绑定)
2.为UI控件的特定事件绑定事件监听器。ios应用中,能与用户交互的控件大都继承了UIControll基类,该类提供了注册、删除事件的处理方法;-addTarget:action:forControlEvent
3.对于UI控件的某些生命周期时间,可直接委托给对应的委托对象处理;像UILable控件没有Touch Up Inside等通用事件,所以也不能通过IBAction来绑定,也不能用addTarget:action:forControlEvent来绑定。系统专门为UITable提供了委托的事件接口,实现该委托的对象来处理UILable的事件。

获取控件的两种方式:
1.IBOutlet连接来获取控件;
2.通过控件指定的Tag属性,来获取该控件;UILabel* myLb = (UILabel*)[self.view viewWithTag:12];


页面切换方法:
(1)UINavigationBarController,利用栈的方式来管理ViewController。NavagationBar会自带引导返回上一个界面的。(此方式是通过代码实现,通过push和pop ViewController来管理界面)
(2)Storyboard提供了segue,不用编写代码,直接通过Storyboard配置即可;每个控件都可以触发Segue,通过箭头绑定;但是如果要进行数据的切换,依然要写代码;
(3)TabBarControl或者TabBar控件来实现,这个需要自己创建多个ViewController来,来重写初始化函数,在单独的ViewController中创建TabBarItem;
但是也可以直接用TabBarController模板工程来创建;

本博客主要来自对《疯狂iOS讲义》的总结。如有不不同见解,请留言交流。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值