zoukankan      html  css  js  c++  java
  • 和iPhone有关的视图控制器:UIViewController、UITabBarController、UINavigationController及其混合用法

    iPhone中的view视图是应用程序对于数据最直观、最直接的呈现方式,如下是我在学习了iPhone中的视图控制器以及由其衍生的特殊子类的总结,希望对那些初学者有所帮助:


    UIViewController和其子类

      如何设置根视图控制器

      UIViewController是最基础也是最简单的视图控制器类,所有其它拥有特殊效果的视图控制器,如接下来要讲到的UITabBarController、UINavigationController都是它的子类;

      首先,在这里我们通常都是先创建一个Empty为模板的工程项目,然后我们创建一个类继承自UIViewController,暂时不勾选创建xib文件,在这里暂时都是用纯代码来创建界面,目的是让读者能够更好的理解UIViewController中内部是怎么运作的,在AppDelegate中创建一个我们刚刚创建的视图控制器类的实例,然后把window的rootViewController交给这个实例,最后我们点击run,程序运行后在模拟器中呈现出来的视图就是由UIViewController控制的视图;

      设置视图控制器为根视图控制器的代码:

    self.window.rootViewController = 我们创建的实例

      

      在视图中画图,包括基本图形和UI元素(纯代码创建,不包含xib文件)

      我们所在View中所绘制的图形,是和UIButton、UILabel等等一样,都是作为组件添加到视图中的。既然是组件,所以他们会随着添加顺序的不同而会产生不同的层次结构。

      首先在这里,简单介绍下要在哪里绘图,和一些绘图最基本的知识;然后,结合UIKit框架中的一些UI元素去创建一些特殊的UI;当然也可以包含xib文件来创建视图控制器,这部分的内容,我以后会加上,现在先掌握这最古板、最繁琐但却是最好理解,最容易掌握的方法先,然后再去掌握xcode内带的特性去简化自己的操作。

      程序运行效果:

      


      1)首先创建一个视图控制器类,继承自UIViewController(选择不包含xib文件),然后再创建一个视图类,继承自UIView;

      2)在视图控制器类中导入视图类,并且创建一个视图类实例;我们可以在ViewController类的初始化函数中进行有关初始化工作(包括对UIView的初始化),然后在viewDidLoad中把该视图类实例设置为视图控制器所管理的视图,只有这样才能把视图显示在屏幕上;

    [self setView:控制器控制的视图];

      3)绘图:所有和绘图有关的代码都是放在这个函数中的

    - (void)drawRect:(CGRect)rect
    {
        // Drawing code
    }

      4)绘图代码示例(绘制直线):

        CGContextRef context = UIGraphicsGetCurrentContext() ;
        CGContextSetLineWidth(context, 10.0) ;
                            
        CGContextMoveToPoint(context, 100, 60);
        CGContextAddLineToPoint(context, 200, 300) ;
        CGContextStrokePath(context) ;

      5)添加UI元素示例(按钮控件)

        self.btn = [UIButton buttonWithType:UIButtonTypeRoundedRect] ;
        self.btn.frame = CGRectMake(200, 50, 100, 30) ;
        [self.btn setTitle:@"Button" forState:UIControlStateNormal] ;
        [self.btn addTarget:self action:@selector(btnAction) forControlEvents:UIControlEventTouchUpInside] ;
        [self.view addSubview:self.btn] ;


    UITabBarController的使用

      IOS7中很多常见的软件都是用UITabBarController,如拨号界面,QQ、微信等等app,都是用这个视图控制器,接下来就是介绍这种视图控制器的用法。

    运行效果图:

      

      1)首先我们可以在AppDelegate.m文件中创建一个UITabBarController实例,并且把它设置为主window的rootViewController:

        UITabBarController *mainController = [[UITabBarController alloc] init] ;
        
        self.window.rootViewController = mainController ;


      2)然后把上面所讲的UIViewController中我所创建的类导入到这个项目中,在上一部分所讲的视图控制器的初始化函数中(自己重写父类的init函数)设置标签条视图的图片和名称:

            self.tabBarItem.title = @"Tab1" ;
            
            self.tabBarItem.image = [UIImage imageNamed:@"icon_number.png"] ;

      3)最后回到步骤1),创建一个2)中的视图控制器实例,并且把他添加到UITabBarController中:

        UITabBarController *mainController = [[UITabBarController alloc] init] ;
        
        WBViewController *vc = [[WBViewController alloc] init] ;
        
        mainController.viewControllers = @[vc] ;
        
        self.window.rootViewController = mainController ;


    UINavigationController

    未完待续





  • 相关阅读:
    类加载机制
    PTA(BasicLevel)-1094 谷歌的招聘
    PTA(BasicLevel)-1023 组个最小数
    异构图神经网络笔记-Heterogeneous Graph Neural Network(KDD19)
    PTA(BasicLevel)-1014 福尔摩斯的约会
    PTA(BasicLevel)-1013 数素数
    PTA(BasicLevel)-1012 数字分类
    PTA(BasicLevel)-1010 一元多项式求导
    PTA(BasicLevel)-1009 说反话
    PTA(BasicLevel)-1008数组元素循环右移问题
  • 原文地址:https://www.cnblogs.com/IOS-Developer/p/4117239.html
Copyright © 2011-2022 走看看