• iOS:UI简单的总结


    UI简单总结:

    一、常用单例:

        NSBundle *bundel = [NSBundle mainBundle]; //加载资源

        NSFileManager *fm = [NSFileManager defaultManager];//文件管理

        UIApplication *app = [UIApplication sharedApplication];//app对象

        UIScreen *screen = [UIScreen mainScreen];//屏幕

        NSNotificationCenter *center = [NSNotificationCenter defaultCenter];//通知中心

    二、常用代理:

    文本框:<UITextFieldDelegate> 

    文本视图: <UITextViewDelegate>

    表格视图:<UITableViewDelegate>、<UITableViewDataSource>

    集合视图:<UICollectionViewDelegate>、<UICollectionViewDatasource>

    滚动视图:<UIScrollViewDelegate> 

    搜索栏:<UISearchBarDelegate>、<UISearchDisplayDelegate>

    三、视图切换方式:

    1、模态窗口(modal:模态)

    (1)控制器之间没有用segue联接时,获取要切换到的目的控制器和切换视图方法为:

    //获取所在的故事板

    + (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil;

    //故事板对象通过目的控制器的身份标识StoryBoardID获取目的控制器

    - (id)instantiateViewControllerWithIdentifier:(NSString *)identifier; 

    //在源控制器中显示目的控制器的模态窗口

    - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion ;

    //在目的控制器中关闭当前控制器的模态窗口

    - (void)dismissViewControllerAnimated:(BOOL)animated;

    如下:

    源控制器中:

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

    destinationViewController *desVC= [storyboard instantiateViewControllerWithIdentifier:@“deVC”];

    [self presentViewController:desVC animate:YES completion:nil];//模态出目的控制器的窗口

    目的控制器中:

    UIStoryBoard *storyboard = [UIStoryboard storyboardWithName:@“Main” bundle:nil];

    resourceViewController *resVC = [storyboard instantiateViewControllerWithIdentifier:@“reVC”];

    [self.presentingViewController dismissViewControllerAnimated:YES];//当前控制器关闭模态窗口

    或者 (如果写self调用该方法,默认是self.presentingViewController调用该方法)

    [self dissmissViewControllerAnimated:YES]

    (2)控制器之间通过segue联接时,获取要切换到的目的控制器并切换视图方法为:在故事板中首先给segue设置identifier标识,然后再使用以下方法。

    //触发某个事件时,可以直接根据segue的identifier跳转到目的控制器界面

    - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender;

    //可以重写该方法,视图切换时,会自动调用该方法,可以用来正向传数据,也可以获取到目的控制器

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;

     

    如下:

    通过segue连接目的控制器后,假如segue的identifier的标识符为deVC,跳转视图为:

      [self performSegueWithIdentifier:deVC sender:self];//切换到目的控制的视图

    视图切换时,重写该方法获取目的控制器和传数据,仍假如segue的identifier的标识符为deVC

    -(void)prepareForSugue:(UIStoryboardSegue *)identifier sender:(id)sender

    {

        if([segue.identifier isEqualToString:deVC])

        {

        destinationViewController *desVC = segue.destinationViewController;//获取目的控制器

        desVC.info = self.TextField.text;//将当前控制器的数据传到目的控制器中

        }

    }

      

    2、UINavigationController(push:入栈  pop:出栈):导航栏控制器

    前提是必须先存在UINavigationController控制器容器,然后在它的底部添加一个根控制器,作为第一个显示的视图,如果接着显示其他视图,就将目的控制器压入栈即可,反之推出栈。

    (1)控制器之间没有用segue联接时,获取要切换到的目的控制器和切换视图方法为:

    //获取所在的故事板

    + (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil;

    //故事板对象通过目的控制器的身份标识StoryBoardID获取目的控制器

    - (id)instantiateViewControllerWithIdentifier:(NSString *)identifier; 

    //将目的控制器压入栈,即显示目的控制器视图

    - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; 

    //将栈顶控制器推出栈,即显示它的前一个控制器的视图

    - (UIViewController *)popViewControllerAnimated:(BOOL)animated;

    //返回指定的子控制器(即将它上面的控制器都推出栈,显示它的视图)

    - (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated; 

    //返回根控制器(显示栈底的控制器的视图)

    - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated; 

    如下:

    源控制器中:

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

    destinationViewController *desVC= [storyboard instantiateViewControllerWithIdentifier:@“deVC”];

    [self.navigationController pushViewController:deVC animate:YES];//将目的控制器压入栈中,即显示

    目的控制器中:

    [self.navigationController popViewControllerAnimated:YES];//将当前显示的视图的控制器推出栈中,即显示上一个控制器的视图

    (2)控制器之间通过segue联接时,获取要切换到的目的控制器并切换视图方法为:在故事板中首先给segue设置identifier标识,然后再使用以下方法。

    //触发某个事件时,可以直接根据segue的identifier跳转到目的控制器界面

    - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender;

    //可以重写该方法,视图切换时,会自动调用该方法,可以用来正向传数据,也可以获取到目的控制器

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;

    如下: 

    通过segue连接目的控制器后,假如segue的identifier的标识符为deVC,跳转视图为:

      [self performSegueWithIdentifier:deVC sender:self];//切换到目的控制的视图

    视图切换时,重写该方法获取目的控制器和传数据,仍假如segue的identifier的标识符为deVC

    -(void)prepareForSugue:(UIStoryboardSegue *)identifier sender:(id)sender

    {

        if([segue.identifier isEqualToString:deVC])

        {

        destinationViewController *desVC = segue.destinationViewController;//获取目的控制器

        desVC.info = self.TextField.text;//将当前控制器的数据传到目的控制器中

        }

    }

    3、UITabBarController:标签栏控制器 

    •通过设置viewControllers属性或者addChildViewController方法可以添加子控制器
    –NSArray *viewControllers
    –- (void)addChildViewController:(UIViewController *)childController
    •UIViewController的tabBarItem属性决定了UITabBar显示的内容
    –使用系统自带的UITabBarItem样式:

    controller.tabBarItem = [[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemSearch tag:1] autorelease];

    –自己设置UITabBarItem的标题和图片:

    controller.tabBarItem.title = @”More”; 

    // controller.title也可以用于设置标题

    controller.tabBarItem.image = [UIImage imageNamed:@”more”];

    –设置UITabBarItem右上角的红色数字

    controller.tabBarItem.badgeValue = @”10”;

    纯代码将下面的三个控制器加入tabBarController中,有如下两种方式:

        //[tabBarController addChildViewController:firstVC];

          //[tabBarController addChildViewController:secondVC];

          //[tabBarController addChildViewController:threeVC];

     或者:

          tabBarController.viewControllers = @[firstVC,secondVC,threeVc];

  • 相关阅读:
    一键清理 Nexus 中无用的 Docker 镜像
    python 获取Linux和Windows硬件信息
    基于Docker安装破解版Jira(无坑)
    vim安装vundle时遇到的问题
    SpringBoot注解大全
    SpringBoot 应用JPA中的一些知识点
    记录初学SpringBoot使用Redis序列化的坑
    Spring Boot连接MySql报错
    钉钉扫码登录中的签名算法在python中的实现
    让Linux的history命令显示用户名和时间
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4808135.html
Copyright © 2020-2023  润新知