iOS: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:标签栏控制器
controller.tabBarItem = [[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemSearch tag:1] autorelease];
controller.tabBarItem.title = @”More”;
// controller.title也可以用于设置标题
controller.tabBarItem.image = [UIImage imageNamed:@”more”];
controller.tabBarItem.badgeValue = @”10”;
纯代码将下面的三个控制器加入tabBarController中,有如下两种方式:
//[tabBarController addChildViewController:firstVC];
//[tabBarController addChildViewController:secondVC];
//[tabBarController addChildViewController:threeVC];
或者:
tabBarController.viewControllers = @[firstVC,secondVC,threeVc];
iOS:UI简单的总结的更多相关文章
- iOS上简单推送通知(Push Notification)的实现
iOS上简单推送通知(Push Notification)的实现 根据这篇很好的教程(http://www.raywenderlich.com/3443/apple-push-notification ...
- [IOS]IOS UI指南
[IOS]IOS UI指南 众所周知,IOS的界面设计,越来越流行,可以说都形成了一个标准,搜集了一些资料,供自己以后学习使用! iOS Human Interface Guidelines (中文翻 ...
- 基于Android 下载文件时,更新UI简单帮助类
因为在项目开发时.有这种简单需求,问谷歌,网络上也有好多Utils工具类,可是比較冗余.自己就简单的写了一个简单帮助类. /** * 下载文件,更新UI简单帮助类 * * @author jarlen ...
- IOS UI 第八篇:基本UI
实现图片的滚动,并且自动停止在每张图片上 - (void)viewDidLoad{ [super viewDidLoad]; UIScrollView *scrollView = [[U ...
- 国外IOS UI指南
国外IOS UI指南 众所周知,IOS的界面设计,越来越流行,可以说都形成了一个标准,搜集了一些资料,供自己以后学习使用! iOS Human Interface Guidelines (中文翻译) ...
- iOS UI的几种模式
iOS UI的几种模式: 1.平凡模式(原生控件组合): 2.新闻模式: 3.播放器模式: 4.微博模式:
- 通过实现一个TableView来理解iOS UI编程
推荐一篇神作: 通过实现一个TableView来理解iOS UI编程 http://blog.jobbole.com/61101/
- iOS CAReplicatorLayer 简单动画
代码地址如下:http://www.demodashi.com/demo/11601.html 写在最前面,最近在看学习的时候,偶然间发现一个没有用过的Layer,于是抽空研究了下,本来应该能提前记录 ...
- iOS之简单瀑布流的实现
iOS之简单瀑布流的实现 前言 超简单的瀑布流实现,这里说一下笔者的思路,详细代码在这里. 实现思路 collectionView能实现各中吊炸天的布局,其精髓就在于UICollectionVie ...
随机推荐
- SQL Join简单介绍
前沿 Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接.外联接和交叉联接等. 如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的数据,这时 ...
- 559. N叉树的最大深度
给定一个 N 叉树,找到其最大深度. 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数. 例如,给定一个 3叉树 : 我们应返回其最大深度,3. 说明: 树的深度不会超过 1000. 树的节点 ...
- CodeForces 811B Vladik and Complicated Book
离线,树状数组. 数据范围好像有点小,直接暴力可以过的. 我直接上了$n,Q≤100000$的做法:只需要判断区间上比$x$小的数字有几个即可,可以对询问进行离线操作,从左到右一个一个数字插入到树状数 ...
- CodeForces 805E Ice cream coloring
直觉,构造. 画了几个样例,发现可以随便构造......先构造根节点的完全图,每个点置为不同的颜色,然后构造儿子节点的完全图...... #include <cstdio> #includ ...
- 从JDBC看Mybatis的设计
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法. 六 ...
- CentOS下Supervisor的安装与使用入门
[转载]http://www.51bbo.com/archives/2120 Supervisor是一个进程管理工具,官方的说法 用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原 ...
- Xamarin 2017.9.19更新
Xamarin 2017.9.19更新 本次更新是添加Xamarin.iOS对iOS 11和Xcode 9的支持.Visual Studio 2017升级到15.3.5获得更新功能.Visual ...
- 变量的解构赋值--ES6
1. 数组的解构赋值 基本用法 let [a, b, c] = [1, 2, 3]; let [a,,c] = [1,2,3]; let [a,...b] = [1,2,3]; // a=1; b=[ ...
- Loj10172 涂抹果酱
题目描述 Tyvj 两周年庆典要到了,Sam 想为 Tyvj 做一个大蛋糕.蛋糕俯视图是一个 N×M 的矩形,它被划分成 N×M 个边长为 1×1 的小正方形区域(可以把蛋糕当成 NNN 行 MMM列 ...
- iOS自定义全屏返回与tableView左划删除手势冲突解决
当自定义一个navigationController实现全屏右划返回时, 使用起来是不是很爽, 代码如下: - (void)viewDidLoad { [super viewDidLoad]; UIG ...