码迷,mamicode.com
首页 > 移动开发 > 详细

iOS:UI简单的总结

时间:2015-09-14 21:11:17      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

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

 

iOS:UI简单的总结

标签:

原文地址:http://www.cnblogs.com/XYQ-208910/p/4808135.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!