视图控制器_ajax mvc视图和控制器 - CSDN
精华内容
参与话题
  • 当使用视图控制器容器时,就会产生拥有父子关系的视图控制器。通过viewControllers来保存一组视图控制器视图控制器容器的特性: 容器对象会将viewControllers中的视图作为子视图加入自己的视图。 容器视图对象...

    父子关系

    当使用视图控制器容器时,就会产生拥有父子关系的视图控制器。通过viewControllers来保存一组视图控制器。

    视图控制器容器的特性:

    • 容器对象会将viewControllers中的视图作为子视图加入自己的视图。
    • 容器视图对象通常都会有自己的默认外观。

    处在同一个父子关系下的视图控制器形成一个族系:

    • 任何容器对象都可以通过viewControllers访问其子对象。

    • 子对象可以通过UIViewController对象的四个特定属性来访问其容器对象:

      1. 先介绍四个特定属性的前三个:navigationController,tabBarController,splitViewController。当某个视图控制器收到这三个消息中的某一个,就会沿着族系向上查找,直到找到类型匹配的视图控制器。如果没找到,返回nil。
      2. 第四个属性:parentViewController,该属性会指向族系中“最近的”那个容器对象。

    显示与被显示关系(presenting-presenter relationship)

    当某个视图控制器以模态(modal)形式显示另一个视图控制器时,就会产生拥有这种关系的视图控制器。当某个视图控制器A以模态形式显示另一个视图控制器B时, B的视图会覆盖A的视图。这和之前介绍的父子关系不同,父子关系的子视图只会在容器对象的视图内显示。 当某个视图控制器A以模态形式显示另外一个视图控制器B时,A的presentedViewController会指向B,而B的presentingViewController属性会指向A。

    在显示与被显示关系中,位于关系的两头的视图控制器不会处于同一个族系中。被显示的视图控制器会有自己的族系。

    如上图所示,凡是针对父子关系的属性,其指向的对象都会在当前族系的范围内。因此,向族系2中的视图控制器发送UITabBarController对象,会返回nil。

    不同族系中的视图控制器关系: 当应用以模态形式显示某个视图控制器时,负责显示该视图控制器的将是相关族系中的顶部视图控制器(以上图为例,族系2中的视图控制器的presentingViewController的属性指向的都是UITabBarController对象)。

    通过编写代码,可以改变这种“顶部对象负责以模态形式显示其他视图控制器”的行为(仅限iPad)。这样就可以限定视图的显示位置。

    为此,UIViewController提供了definesPresentationContext属性,其默认值是NO,当为NO时,会将“显示权”传递给父视图控制器,并沿族系依次向上传递,直到最顶层视图控制器。相反,如果在传递过程中,如果某个视图控制器的definesPresentationContext是YES,该视图控制器就不会再将“显示权”传递给父视图控制器,而是由自己负责新的视图控制器。此外,对于这种情况,必须将需要显示的视图控制器的modalPresentationStyle属性设置为UIModalPresentationCurrentContext

    展开全文
  • //创建UIPageViewController let pageViewController:UIPageViewController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, ...//将UIPageViewController添加到试图控制

    //创建UIPageViewController
    let pageViewController:UIPageViewController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil);
    
    //将UIPageViewController添加到试图控制器的view上
    addChildViewController(pageViewController);
    view.addSubview(pageViewController.view);
    pageViewController.didMove(toParentViewController: self);
    pageViewController.setViewControllers([BBPlayWhatViewController() as UIViewController], direction: .forward, animated: false, completion: nil)
    多用于有多个标签的页面, 既能分开处理各个页面的业务逻辑, 又能同时保有第一次加载的数据而不丢失.

    简书博客地址

    https://www.jianshu.com/u/3c7c13f3dc6b


    展开全文
  • 视图控制器

    2019-10-19 16:23:47
    文章目录1.新建UIViewController2.在ViewController中添加一...视图控制器UIViewController,视图控制,在新版本xcode中会默认生成一个ViewController。 1.新建UIViewController 右键->New File添加一个继承自UIV...


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

    1.新建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:^{}];
    }
    

    2.在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];
    

    3.视图的生命周期

    在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.
    }
    

    4.其他弹窗方式

    [[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];
    
    展开全文
  • 用一句话概括,就是:在iOS应用运行中,屏幕中显示的内容是一组一组的视图对象,他们负责显示屏幕中的内容,而在视图的后面是UIViewController视图控制器,它的作用是管理哪些视图中显示的内容,并协调他们和应用...

    用一句话概括,就是:在iOS应用运行中,屏幕中显示的内容是一组一组的视图对象,他们负责显示屏幕中的内容,而在视图的后面是UIViewController视图控制器,它的作用是管理哪些视图中显示的内容,并协调他们和应用其他部分的关系。

    但是这么说还是有些抽象,因为一些具体问题并未得到解决,比如说:如何知道我这个视图控制器控制的是哪些视图?“控制”究竟指的是什么?是事无巨细的管理着视图的内容和显示方式,还是说只需要管理视图的加载到消失整个流程即可?
    下面来仔细的看一下:

    在一个复杂的iOS应用中, 往往包含多个屏幕的内容,使用UIViewController可以方便管理众多的内容。
    UIViewController类负责创建其管理的视图,并在内存较低的时候讲他们从内容中移除。
    UIViewController可以通过视图控制器来将新的视图内容,以模态窗口的方式显示在当前视图的上方。
    视图控制器可以响应设备的方向变化,对视图进行相应的调整,以适应屏幕的新方向。
    一些特殊的视图控制器,如导航视图控制器、标签视图控制器,可使视图的管理更加方便和规范。

    视图控制器的生命周期:
    alloc
    创建一个视图控制器对象,并分配内存空间。
    init()
    对视图控制器对象进行初始化。
    loadView
    如果从storyboard创建视图,则从storyboard中加载视图。
    viewDidLoad
    视图加入完成,可以进行一些自定义操作
    viewWillAppear
    视图即将要展示在屏幕上。
    viewDidAppear
    视图已经站在屏幕上显示并完成渲染。
    viewWillLayoutSubviews
    视图即将布局其子视图
    viewDidLayoutSubviews
    视图已经完成子视图的布局
    viewWillDisappear
    视图即将从屏幕中消失
    viewDidDisappear
    视图已经从屏幕上消失
    dealloc
    视图被销毁

    展开全文
  • 视图控制器的作用

    千次阅读 2014-08-26 21:28:16
    视图控制器来分担AppDelegale的任务, 管理子视图, 所以也需要一个类似于containView的视图来管理子视图, 所以对于视图控制器自身也自带了一个view, 大小和屏幕大小相同, 通过self.view访问视图控制器的view 视图...
  • UIWindow作为iOS程序的窗口(也可以说是根视图),它就像一个容器,可以用来存放自己定义的各个子视图(UIView或其子类)。层次结构中的每个视图分别绘制自己,视图会将自己绘制在图层上。 为UIWindow添加View的...
  • 怎么在其他视图控制器中切换根视图控制器 例如在一个普通的视图控制器UIViewControler中切换根视图控制器 1、利用UIApplacation这个类获取当前应用程序 2、设置委托对象,注意这个委托对象应为Appdelegate的一个...
  • 这里做个笔记,为了方便,当前视图控制器记为控制器1,添加的视图记为控制器2 1.首先,因为控制器2的视图上有需要与用户交互的需求,所以一定要设置2为1的子控制器  ViewController *vc2 = [[ViewController alloc]...
  • ios修改根视图控制器

    千次阅读 2015-07-20 21:19:56
    视图除了可以在AppDelegate.m文件中指定之外也可以在外面定义// 修改根视图 24.AppDelegate* appDelagete = [UIApplication sharedApplication].delegate; 25.appDelagete.window.rootViewController ...
  • iOS根据视图获取根视图控制器

    千次阅读 2016-06-23 09:24:43
    //根据视图获取根视图控制器 - (UIViewController*)viewController {  for (UIView* next = [self superview]; next; next = next.superview) {  UIResponder* nextResponder = [next nextResponder];  if
  • SpringBoot拦截器和视图控制器

    千次阅读 2017-11-28 20:00:00
    SpringBoot拦截 1、定义拦截(与SpringMVC的定义方式一致) package com.mingde.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org....
  • iOS 透明视图控制器

    千次阅读 2015-08-06 21:50:05
    所以这个时候,我们就可以使用视图控制器了。很多情况下,我们都像让我们的视图控制器背景透明, 在网上查找N久之后,终于发现 ios8多了一个样式UIModalPresentationOverCurrentContext,跟原来的很相近哦。 ...
  • 容器视图控制器是一种结合多个视图控制器的内容到一个单一的用户界面上的方式。容器视图控制器经常被用来使导航更方便,基于已经存在的内容创建一个新的用户界面类型。例如,在UIKit中的容器视图控制器包括...
  • 本文主要介绍在不同的视图控制器之间进行传值,分为两种传值方式,正向传值比较容易,逆向传值相对于正向来说麻烦一点,需要使用代理或者是block
  • 大多数自定义的视图控制器都是内容视图控制器,也就是说,它们拥有自己的视图而且负责管理这些视图的数据。相比之下,容器视图控制器不拥有它的全部视图,它的一些视图被其它的视图控制器管理。定义内容和容器视图...
  • 大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢!...你可能希望直接操作与特定导航控制器相关的子视图控制器的数组.你可以
  • iOS视图控制器的跳转方法

    千次阅读 2015-08-18 20:10:54
    视图的跳转有很多的方式,本文主要将其分为普通的viewController和导航控制器navigationController两种来进行详细说明
  • 自然而然就会想到用容器视图控制器去导航和管理,容器视图控制器也就是所说的父子视图控制器。 为了实现一个容器视图控制器,我们必须建立容器视图控制器和它的子视图控制器之间的关系。也就是所说的父子关系,...
  • 浅谈iOS视图控制器间的关系

    千次阅读 2015-11-17 09:35:53
    本文将为详细的介绍了视图控制器UIController及其子类间的两种关系——父子关系和显示与被显示关系,能够帮助初学者更好地理解tabBarController、navigationController、splitViewController、parentViewController...
  • 视图控制器和视图类

    2014-01-13 16:12:41
    iPhone编程规则是:一个窗口,多个视图。UIView是iPhone屏幕上很多控件的基础类。每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊的UIView)内的众多UIView及其专门化子类构建的。 显示数据的视图: ...
1 2 3 4 5 ... 20
收藏数 341,059
精华内容 136,423
关键字:

视图控制器