美文网首页
(GeekBand第四周)ios实战

(GeekBand第四周)ios实战

作者: 5君 | 来源:发表于2016-03-28 08:41 被阅读0次

    @ViewController

    几种设计模式:

    MVC:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

    MVP:从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller(Model+Presenter+data binding).

    MVVM:MVVM是Model-View-ViewModel的简写。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化(Model View Model +two way data binding)。

    后面会做更为详细的说明,这里不再赘述。

    UIViewcontroller:它是用来管理界面View的控制器。

    UIViewcontroller功能主要有:传递数据(在各个view中传递,在model和view之间传递),响应用户操作,内存管理、状态保持和适应设备(phone,pad等)。

    界面View的创建:可通过Mainstoryboard或NSmainNibFile来创建(_loadMainStroyboardFileNamed:bundle或_loadMainNibFileNamed:bundle),如果没有这两个,用程序来初始化界面(didlaunch)否则则得到window为nil(黑屏)。

    View Controller怎么创建其界面View:

    从上图可以看出,View Controller用系统方法及UI方法或是xib方法(找寻view controller相关名字的nib创建),如果匹配不到则用UIView来创建空白视图。

    ViewController的生命周期:ViewController生命周期会经历初始化、加载视图、销毁视图、生命结束等过程。

    多个view controller

    @Storyboard

    Storyboard是一个用来管理各个View(或称为Scene)之间跳转或联系的一个东西,本质上storyboard是一个XML文件。下面来介绍storyboard一些功能。

    is initial View Controller:主要用于定那个View为Storyboard的初始窗口,当只有一个View时又没有定义初始窗口时,打开App调用Storyboard时会显示黑屏(因为找不到需要调用的初始窗口)。

    Segue:用于建立场景之间的跳转。可以用在storyboard中直接在两个view中Ctrl+拖动button或直接右键建立Segue。这样可以轻松在两个view中跳转。还有一个问题需要说明,就是要定义设置Segue的Indentifier,这样才能在代码中访问该Segue。还可以用代码来实现view之间的跳转,如下:

    -(void)viewDidAppear:(BOOL)animated

    {[self performSegueWithIdentifier:@"drawecg" sender:self];}

    -[UIStoryboard storyboardWithName:bundle:]加载stroyboard的一个方法,主要用来实现不同storyboard中view的跳转,如下图:

    Unwinding Segue:用来跳转回到之前的view中(反向传递数据给之前的View)。如下:

    - (IBAction)unwindSegueToRedViewController:(UIStoryboardSegue *)segue {  }

    接着在Viewcontroller的Exit建立连接,连接到它的触发条件上。

    正向传递可以用prepareForSegue。

    多个storyboard

    实际应用中,场景可能很多,所以可能需要多个storyboard方便管理。storyboard可以通过library的组件直接建立,也可以新建来建立。

    @App Lifecycle

    所谓生命周期,其实就是指从App启动到关闭这一过程中所发生的一系列事件。由于iOS 4之后引入了多任务功能,App能够在后台执行,而�iOS 3 是没有多任务功能的,故两者的生命周期并不相同。

    - (void)applicationDidEnterBackground:(UIApplication *)application方法有大概5秒的时间让你完成这些任务。如果超过时间还有未完成的任务,你的程序就会被终止而且从内存中清除。

    如果还需要长时间的运行任务,可以在该方法中调用

    [application beginBackgroundTaskWithExpirationHandler:^{

    NSLog(@"begin Background Task With Expiration Handler");}];

    Xcodet调试功能

    @Navigation Bar

    导航栏

    看到的controller不一定是top controller

    用代码创建、跳转和设置控制nav

    设置和控制(delegate,viewcontroller,navigation,toolbar)

    navigation的界面定制:

    Navigation的结构:

    可以放在navigation bar的按钮都是继承自UIBarButtonItem(可用图片作为按钮,这些按钮一般是有实际作用的)

    Navigation还可以放toolbar

    [UIView appearance].tintColor=[UIColor redColor];

    Bar占界面,如何将Bar藏起来(On tap等选项)

    @Tabbar

    UITabBarController:管理一堆view controller

    UITabBarController的构成:viewcontrollers,customizableViewControllers(NSArray),selectedViewController,delegate。

    UITabarItem属性调节设置(Title 和 Image,button中既有图片又有文字,与Navigation不一样的地方)

    直接用tabbar的模式可以生成一个带有Tabbar的View

    或和navigation一样用embed in来添加

    太多的TabBarItem时,会自动归到more中,可以自己选择哪个显示,哪个不显示

    UITabBarControllerDelegate:如何设置跳转前询问是否跳转

    代码创建,管理与选中分页

    简单定制:system Item

    怎么用代码创建TabBarItem

    相关文章

      网友评论

          本文标题:(GeekBand第四周)ios实战

          本文链接:https://www.haomeiwen.com/subject/qrkjlttx.html