iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)
 

前面我们介绍了StoryBoard这个新技术,和纯技术编程的代码创建界面,本篇我们将介绍一个老的技术,但是在很多的公司或者库里面还是使用这个技术,既然如此它肯定有他的好处,至于好处这里我就不一一介绍了。
在Xcode5之前是只能使用Xib或者代码的,而代码又对于很多初学者来说算是一个难题。毕竟不知道怎么下手。所以我就总结了一下这段时间自己编写程序的一个实例来说明怎么使用老板的,苹果已经弃用了的Xib搭建一个软件界面:

一:新建一个空的项目,我这里命名未iCocos

此时项目里面就只有一个Appdelegate的头文件和实现文件

二:新建一个继承自tabBarController的MainViewController类(不是用Xib)。

三: 新建一个继承自UIViewController的BaseViewController类,这个来是用来继承的,我们后面用到的一般的UIView都是 继承自这个类。再新建一个继承自NavigationController的BasenavigationController类,这个也是一样是用来继 承的,我回到前面两篇中会看到你界面又五个导航栏对应显示,这里我们用来继承哪五个导航控制器的,当然后面还用到导航控制器也一样能继承自它,除非要做特 别的效果,注:这两个类都不要使用到Xib,因为是用来继承的,没必要显示界面。

四:新建五个对应的ViewController,它是继承是上面我们创建的BaseViewController,而且都要使用Xib,再新建之后记得取消每个Xib的自动布局Autolayout。

五:在MainViewController中导入上面新建的五个ViewController并初始化他们。
导入BaseNavigationController并将上面创建的五个ViewController实例放到数组里面作为它的根控制器加入到界面中:

到这里我们就基本上创建了一个环境界面。
下面我们来实现一些想要的功能:

六:前提两篇中我们又使用到自定义TabBar,而且在以后开发中这是很重要的,所以我们夜来实现一下,现在MainViewController中做如下定义

@interface MainViewController : UITabBarController
{
    UIView *_tabBarView;
}

@end:

后面一张是在ViewDidLoad中调用这两个方法,不然就不能正常显示,而且还会崩溃。
当然要使用自定义的tabBar我们一半都是在初始化方法中隐藏系统自带的tabBar
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        [self.tabBar setHidden:YES];
    }
    return self;
}

七:我们在Appdelegate中导入这个mainViewController头文件,并在里面初始化它,最后将它作为Window的根控制器显示出来,一切就OK了。

八:最后我们来补充一个知识点,那就是向我们的QQ主界面右滑显示一个抽屉一样的界面,但是这个界面只显示一部分的,当然我也还会在专门的章节里面介绍这个功能及其使用,其实看完之后你们就知道这个其实很简单。

九:首先我们需要在网上下载一个库DDMenuController,导入之后在Appdelegate里面导入主类。

十:新建两个继承自BaseViewcontroller的类分别叫做RightViewController,LeftViewController,这里我们也要使用Xib,因为要做显示

十 一:在Appdelegate中导入这两个类,并且在启动方法里面初始化DDMenuContrller和 RightViewController,LeftViewController,将DDMenuController的左右控制器设置为我们创建的左右 实例(这里我们不要关心,因为十DDmenu这个库里面已经实现了的,我们只要拿来用九可以),最后八根控制器改为我们的 DDMenuController控制器,用来显示就可以了:

运行显示如下。大功告成,是不是很简单。哈哈!

纯代码主流App框架搭建:http://www.cnblogs.com/iCocos/p/4690677.html

StoryBoard主流App框架搭建:http://www.cnblogs.com/iCocos/p/4690659.html

iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)的更多相关文章

  1. iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)   这里我们就直接上实例: 一:新建一个项目singleV ...

  2. iOS开发——实战OC篇&环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)

      环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)   研究了这么就IOS开发,都没有所处一个像样或者自己忙一点的项目.最近自 ...

  3. ios开发——实战OC篇&SQLite3的实际应用

    SQLite3的实际应用 前面的文章中介绍了SQlite,并且介绍了他的各种语法及使用方法. 但是没有正在项目中使用特,今天就开始做一个小小的实例,就是使用SQLite3来实现数据库的相应操作并且把他 ...

  4. ios开发——实战OC篇&FMDB详解

    FMDB详解 前一篇文章中我们介绍的SQLite的使用,在iOS中原生的SQLite API在使用上相当不友好. 于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...

  5. iOS开发——控制器OC篇&UINavigationController&UITabBarController详解

    UINavigationController&UITabBarController详解 一:UINavigationController 控制器的属性: UINavigationControl ...

  6. iOS开发——实用技术OC篇&单例模式的实实现(ACR&MRC)

    单例模式的实实现(ACR&MRC) 在iOS开发中单例模式是一种非常常见的模式,虽然我们自己实现的比较少,但是,系统却提供了不少的到来模式给我们用,比如最常见的UIApplication,No ...

  7. iOS开发——多线程OC篇&多线程总结

    多线程总结 //1.NSThread /** 优点:NSThread 比其他两个轻量级. 缺点:需要自己管理线程的生命周期,线程同步,线程同步时对数据的加锁会有一定的系统开销. cocoa给我提供了两 ...

  8. iOS开发——图层OC篇&UIColor深入研究(CGColor,CIColor)

    UIColor深入研究(CGColor,CIColor) 由于跟人比较喜欢研究关于图层与动画方面的技术,正打算看看别人写的好东西,就遇到了好几个问题, 第一:UIClor类方法的使用 就是关于UICo ...

  9. iOS开发——多线程OC篇&多线程详解

    多线程详解 前面介绍了多线程的各种方式及其使用,这里补一点关于多线程的概念及相关技巧与使用,相信前面不懂的地方看了这里之后你就对多线程基本上没有什么问题了! 1——首先ios开发多线程中必须了解的概念 ...

随机推荐

  1. stringstream实例

    stringstream的具体作用稍后来总结,这里分享一个实例,从txt文档中读取数据,并对进行处理. #include <iostream> #include <sstream&g ...

  2. linux中的配置文件

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一个 ...

  3. IdTCPServer

    IdTCPServer1 Server本身就支持多线程,一个服务端连接多个客户端. IdTCPServer1.Bindings.Add.IP := '127.0.0.1';IdTCPServer1.B ...

  4. 深入理解PHP Opcode缓存原理

    什么是opcode缓存? 当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode).Opcode cache的目地是避免重复编译,减少 ...

  5. Wicket Hello World Example

    A simple hello world example in Wicket, show the basic structure of Wicket web application. Tools an ...

  6. UVALive 7147 World Cup

    https://icpcarchive.ecs.baylor.edu/index.phpoption=com_onlinejudge&Itemid=8&page=show_proble ...

  7. poj 3264 Balanced Lineup(RMQ裸题)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 43168   Accepted: 20276 ...

  8. oracle学习 十一 包+复合类型+自定义异常(持续更新)

    在这里讲一下包的概念, 二话不说上个例子 包头: create or replace package pck_test is procedure proc_report_salary(name nva ...

  9. oracle学习 四(持续更新中)无法为表空间 MAXDATA 中的段创建 INITIAL 区

    解决建立表的时候出现的 ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区 出现这个问题是因为表空间的大小不足,可以给他扩容这样的话也会多出来一个数据文件.具体写法如下 ...

  10. sql语句增删改查(转)

    一.增:有4种方法 1.使用insert插入单行数据:                  语法:insert [into] <表名> [列名] values <列值>    例 ...