zoukankan      html  css  js  c++  java
  • 视图控制器

    视图控制器UIViewController,视图控制,在新版本xcode中会默认生成一个ViewController。

    (一)新建UIViewController

    右键->New File添加一个继承自UIViewController的类View1Controller,在viewDidLoad中添加button,并设置button点击事件为关闭此ViewController

        self.view.backgroundColor=[UIColor redColor];
        
        UIButton *closeViewBtn=[[UIButton alloc] init];
        closeViewBtn.backgroundColor=[UIColor blueColor];
        closeViewBtn.frame=CGRectMake(10, 30, 100, 30);
        [closeViewBtn setTitle:@"Close" forState:UIControlStateNormal];
        [closeViewBtn addTarget:self action:@selector(closeView) forControlEvents:UIControlEventTouchDown];
        
        [self.view addSubview:closeViewBtn];

    点击事件

    -(void) closeView
    {
        [self dismissViewControllerAnimated:YES completion:^{}];
    }

    (二)在ViewController中添加一个button用来控制View1Controller的启动出现

        //ViewController
        UIButton *showView1Btn=[[UIButton alloc] init];
        showView1Btn.frame=CGRectMake(10, 470, 100, 30);
        showView1Btn.backgroundColor=[UIColor redColor];
        [showView1Btn addTarget:self action:@selector(showView1:) forControlEvents:UIControlEventTouchDown];
        
        [self.view addSubview:showView1Btn];
    -(void) showView1:(UIButton *)showView1Btn
    {
        View1Controller *view1=[[View1Controller alloc] init];
        [self presentViewController:view1 animated:YES completion:^{}];
    }

    通过上述两步可以实现视图的简单切换。

    (三)视图的生命周期

    在view1Controller中添加如下代码,在其启动过程中可以看到除viewDidLoad外其他方法的触发以及启动顺序

    -(void) loadView
    {
        [super loadView];
        NSLog(@"Load view");
    }
    
    -(void) viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
        NSLog(@"View will appear");
    }
    
    -(void) viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        NSLog(@"View did appear");
    }
    
    -(void) viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
        NSLog(@"View will disappear");
    }
    
    -(void) viewDidDisappear:(BOOL)animated
    {
        [super viewDidDisappear:animated];
        NSLog(@"View did disappear");
    }
    
    -(void) closeView
    {
        [self dismissViewControllerAnimated:YES completion:^{}];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }

    (四)其他弹窗方式

    [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController: view1 animated: YES completion:nil];
    [[UIApplication sharedApplication].keyWindow.rootViewController dismissViewControllerAnimated:YES completion:^{}];

    在unity生成的工程中可以通过GetAppController().rootViewController获取到根视图,既而进行试图操作,一般插件中用此方法较多

    [GetAppController().rootViewController presentViewController: view1 animated:YES completion:NULL];
    [GetAppController().rootViewController dismissViewControllerAnimated:YES completion:NULL];
  • 相关阅读:
    推荐一个博客,或许给技术流的自己一些启示
    Boost多线程-替换MFC线程
    Python:Matplotlib 画曲线和柱状图(Code)
    AI:机器人与关键技术--总是被科普
    OnLineML一:关于Jubatus 的简介...
    使用PCL::GPU::遇到问题
    dll文件:关于MFC程序不能定位输入点
    实践:使用FLANN.LSH进行检索
    模式识别两种方法:知识和数据
    几个方便编程的C++特性
  • 原文地址:https://www.cnblogs.com/llstart-new0201/p/9690508.html
Copyright © 2011-2022 走看看