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];

iOS:UI简单的总结的更多相关文章

  1. iOS上简单推送通知(Push Notification)的实现

    iOS上简单推送通知(Push Notification)的实现 根据这篇很好的教程(http://www.raywenderlich.com/3443/apple-push-notification ...

  2. [IOS]IOS UI指南

    [IOS]IOS UI指南 众所周知,IOS的界面设计,越来越流行,可以说都形成了一个标准,搜集了一些资料,供自己以后学习使用! iOS Human Interface Guidelines (中文翻 ...

  3. 基于Android 下载文件时,更新UI简单帮助类

    因为在项目开发时.有这种简单需求,问谷歌,网络上也有好多Utils工具类,可是比較冗余.自己就简单的写了一个简单帮助类. /** * 下载文件,更新UI简单帮助类 * * @author jarlen ...

  4. IOS UI 第八篇:基本UI

    实现图片的滚动,并且自动停止在每张图片上     - (void)viewDidLoad{    [super viewDidLoad]; UIScrollView *scrollView = [[U ...

  5. 国外IOS UI指南

    国外IOS UI指南 众所周知,IOS的界面设计,越来越流行,可以说都形成了一个标准,搜集了一些资料,供自己以后学习使用! iOS Human Interface Guidelines (中文翻译) ...

  6. iOS UI的几种模式

    iOS UI的几种模式: 1.平凡模式(原生控件组合): 2.新闻模式: 3.播放器模式: 4.微博模式:

  7. 通过实现一个TableView来理解iOS UI编程

    推荐一篇神作: 通过实现一个TableView来理解iOS UI编程 http://blog.jobbole.com/61101/

  8. iOS CAReplicatorLayer 简单动画

    代码地址如下:http://www.demodashi.com/demo/11601.html 写在最前面,最近在看学习的时候,偶然间发现一个没有用过的Layer,于是抽空研究了下,本来应该能提前记录 ...

  9. iOS之简单瀑布流的实现

    iOS之简单瀑布流的实现   前言 超简单的瀑布流实现,这里说一下笔者的思路,详细代码在这里. 实现思路 collectionView能实现各中吊炸天的布局,其精髓就在于UICollectionVie ...

随机推荐

  1. Hadoop(一)Hadoop的简介与源码编译

    一 Hadoop简介 1.1Hadoop产生的背景 1. HADOOP最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加, ...

  2. python ConfigParser 配置读写

    我们写程序的时候一般都会写程序包的时候,很少硬编码写在一起,这有个很好的配置文件包. 参考 ConfigParser  和   ConfigParser 的使用 一.ConfigParser 简介 C ...

  3. bzoj 1855 dp + 单调队列优化

    思路:很容易写出dp方程,很容易看出能用单调队列优化.. #include<bits/stdc++.h> #define LL long long #define fi first #de ...

  4. 使用afl-dyninst fuzz无源码的二进制程序

    转:http://ele7enxxh.com/Use-AFL-dyninst-To-Fuzz-Blackbox-Binaries.html 使用afl-dyninst fuzz无源码的二进制程序 通常 ...

  5. Python并发编程-一个简单的多进程实例

    import time from multiprocessing import Process import os def func(args,args2): #传递参数到进程 print(args, ...

  6. FFTW3学习笔记1:VS2015下配置FFTW3(快速傅里叶变换)库

    一.FFTW简介 FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. ...

  7. CSS 笔记——导航栏、下拉菜单、提示工具

    8. 导航栏.下拉菜单.提示工具 (1)导航栏 垂直导航栏 <!DOCTYPE html> <html lang="en"> <head> &l ...

  8. 「CSA49」Bunny on Number Line

    「CSA49」Bunny on Number Line 题目大意:有一个人从0开始走,每次可以向前走一步或者回到1,那么会产生一个位置序列,其中给出 \(k\) 个位置是好的.定义一个位置序列是好的, ...

  9. 「学习笔记」wqs二分/dp凸优化

    [学习笔记]wqs二分/DP凸优化 从一个经典问题谈起: 有一个长度为 \(n\) 的序列 \(a\),要求找出恰好 \(k\) 个不相交的连续子序列,使得这 \(k\) 个序列的和最大 \(1 \l ...

  10. POJ2157 Check the difficulty of problems 概率DP

    http://poj.org/problem?id=2151   题意 :t个队伍m道题,i队写对j题的概率为pij.冠军是解题数超过n的解题数最多的队伍之一,求满足有冠军且其他队伍解题数都大于等于1 ...