UI 03 UIViewController (视图控制器)的7个方法与视图的跳转

新建一个继承于UIViewController 的类

在AppDelegate.m 中写如下代码.

 //1.创建一个rootViewController对象
    RootViewController *rootVC = [[RootViewController alloc]init];
    //2.给window设置根视图控制器
    self.window.rootViewController = rootVC;
    [rootVC release];

在RootViewController.m文件中的代码如下

#import "RootViewController.h"
#define HEIGHT self.view.frame.size.height
#import "SecondViewController.h"
@interface RootViewController ()
@property(nonatomic,retain)NSMutableArray *arr;
@end

@implementation RootViewController
// UIViewController的方法完整有7个,如下:

//1.初始化方法,这个方法一般自己就调用了,不需要我们再额外调用.会初始化一些容器,比如数组,字典等.
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.arr = [NSMutableArray array];
    }
    //打印出当前方法名
    NSLog(@"%s",__FUNCTION__);
    return self;
}

//2.self.view 的加载,什么时候用到什么时候触发方法.
- (void)loadView
{
    [super loadView];
    NSLog(@"%s",__FUNCTION__);
}

#pragma mark 如果想重写父类的方法,首先先用super去调用父类的方法,这样可以保证原功能不变,然后在方法里再写新添加的功能;

//3.前三个方法是同时触发的,一般代码写在这个方法中.
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor yellowColor];
//      NSLog(@"%s",__FUNCTION__);

   // 视图的跳转:
   **UIButton * button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.frame = CGRectMake(100, 500, 50, 40);
    [button setTitle:@"下一页" forState:UIControlStateNormal];
    [self.view addSubview:button];
    [button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
    button.layer.borderWidth = 1;
    button.layer.cornerRadius = 10 ;
    button.backgroundColor = [UIColor cyanColor];**

}

- (void)click:(UIButton *)button
{
    //随机颜色
//    self.view.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 255.0 green:arc4random() % 256 / 255.0  blue:arc4random() % 256 / 255.0  alpha:1];
    //创建一个secondVC的对象
    SecondViewController *secondVC = [[SecondViewController alloc]init];
    //设置一下跳转的时候动画效果
    [secondVC setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
    //进行跳转
    [self presentViewController:secondVC animated:YES completion:^{

    }];
    //内存管理
    [secondVC release];
}

//4.视图将要出现
#pragma mark 视图将要出现
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
      NSLog(@"%s",__FUNCTION__);
}
//5.视图已经出现
#warning 这个方法是视图已经出现
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
      NSLog(@"%s",__FUNCTION__);
}
//6.视图将要消失
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
      NSLog(@"%s",__FUNCTION__);
}
//7.视图已经消失
- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
      NSLog(@"%s",__FUNCTION__);
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

下面的代码是在SecondViewController.m 中关于视图的跳回的代码.

#import "SecondViewController.h"

@interface SecondViewController ()

@end

@implementation SecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor whiteColor];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.frame = CGRectMake(100, 100, 100, 100);
    button.layer.borderWidth = 1;
    button.layer.cornerRadius = 10;
    [self.view addSubview:button];
    [button setTitle:@"返回" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
}

- (void)click:(UIButton *)button
{
    //点击返回到前一个页面
    [self dismissViewControllerAnimated:YES completion:^{

    }];
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 23:32:17

UI 03 UIViewController (视图控制器)的7个方法与视图的跳转的相关文章

iOS视图控制器编程指南 --- 实现一个容器视图控制器

容器视图控制器是一种结合多个视图控制器的内容到一个单一的用户界面上的方式.容器视图控制器经常被用来使导航更方便,基于已经存在的内容创建一个新的用户界面类型.例如,在UIKit中的容器视图控制器包括UINavigationcontroller,UITabBarcontroller 和 UISplitViewcontroller,它们都可以使用户界面在不同视图部分之间的切换和导航更加的容易. 设计一个自定义的容器视图控制器 在几乎所有的方面,一个容器视图控制器就像其它任何一个内容视图控制器一样,它管

[Xcode10 实际操作]三、视图控制器-(10)在Storyboard中使用图像视图控件

本文将演示常用的图像视图控件在故事板中的使用. 打开故事板文件[Main.storyboard]点击选择视图控制器的根视图. 点击库图标,打开控件库面板. 在控件库搜索框内,输入控件名称,在控件库中,快速定位目标控件. 然后在标签控件上双击,导入所需的控件. 在图像视图右侧的定界框上按下手指,并向右拖动,以调整标签视图的宽度. 将标签控件向下方拖动一段距离. 然后点击库图标,再次打开控件库面板. 在控件库搜索框内,输入控件名称,在控件库中,快速定位目标控件. 然后在按钮控件上双击,导入所需的控件

视图控制器的生命周期方法

下面死循环分析: - (void)loadView { NSLog(@"%s",__func__); } - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor redColor]; } 因为loadView里面没有创建视图,到了viewDidLoad里面来访问self.view的时候则会又会调用loadView,如此一来则就造成死循环了 如果loadView里面没有创建视图的话,那

iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法

一.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有两种方法. 1.通过方法 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion跳转 相

UI基础:视图控制器.屏幕旋转.MVC

UIViewController 视图控制器,继承自UIResponder,作用:管理视图并且响应事件 功能: 1.分担APPdelegate的工作 2.实现模块独立,能提高复用性 创建UIViewController对象: UIViewController *viewController=[[UIViewController alloc]init]; UIViewController 自身带了一个UiView,默认的大小和屏幕大小一样. 每一个window都带有一个根视图,如果不给根视图赋值,

视图控制器

?.?定义视图(label-textField组合视图 LTView) ?定义视图:系统标准UI之外,??组合?出的新的视图. ?定义LTVie━使?了?种设计模式:复合设计模式. 复合设计模式:A类中,使?B类(或者更多类)作为??的成员(实 例变量). iOS新控件往往都是?已有控件组 合?成的. 1.新建一个空模板的工程,将环境配置为MRC,四步走     2.新建一个视图控制器,将此视图控制器指定为window的根视图控制器     3.自定义视图LTView,明确LTView内部的控件

iOS学习之视图控制器

一.自定义视图(label-textField组合视图) 1.自定义视图:系统标准UI之外,自己组合出的新的视图. 2.优点:iOS提供了很多UI组件,借助它们我们可以实现不同的功能.尽管如此,实际开发中,我们还需自定义视图.积累自己的代码库,方便开发.自己封装的视图,能像UI空间一样,用于别的项目中,能大大降低开发成本,提高开发效率. 3.高质量代码的特点:可复用,可移植,精炼等.(高内聚,低耦合). 4.自定义视图步骤 根据需求的不同,自定义视图继承的类也有所不同.一般自定义的视图会继承于U

集合视图控制器(CollectionViewController) 、 标签控制器(TabBarController) 、 高级控件介绍

  1 创建集合视图,设置相关属性以满足要求 1.1 问题 集合视图控制器UIConllectionViewController是一个展示大量数据的控制器,系统默认管理着一个集合视图UICollectionView,功能几乎和UITableViewController差不多,能够以多行多列的形式展示数据. 集合视图UICollectionView继承至UIScrollView,也同tableView一样有两个协议,分别是UICollectionViewDataSource数据源协议和UIColl

[BS-20] 导航控制器和视图控制器在添加控制器的区别

导航控制器和视图控制器在添加控制器的区别 1. 因导航控制器拥有导航栈,有一个普通视图控制器都没有的数组viewControllers,加入该数组中的视图控制器默认以push的方式进入导航栈.导航控制器有个[UINavigationController alloc] initWithRootViewController:rootVC]; 的初始化方法,调用该方法相当于把rootVC加入数组viewControllers的第一个位置,作为栈底部的rootVC是不会被pop出去的,与导航控制器共生死