管理视图控制器方法

在iOS 5.0及以后,iOS为UIViewController类添加了新的属性和方法: 
@property(nonatomic,readonly) NSArray *childViewControllers - 
(void)addChildViewController:(UIViewController *)childController - 
(void)removeFromParentViewController - 
(void)transitionFromViewController:::::: - 
(void)willMoveToParentViewController:(UIViewController *)parent - 
(void)didMoveToParentViewController:(UIViewController *)parent 
这样,就能够将一个页面中的UIViewController控制起来,而不是混乱的共用一个UIViewController,最重要的是,编程习惯的革命:降低了功能的耦合度! 

这里看看这几个方法的使用: 

一、[父视图控制器 addChildViewController:子视图控制器]; 

在此,图控制器A添加了另一个图控制器B,那么A充当父视图控制器,B充当子视图控制器。父视图控制器充当了视图控制器容器的角色。 

1、addChildViewController方法: 
- (void)addChildViewController:(UIViewController *)childController 
向视图控制器容器中添加子视图控制器 

childController:子视图控制器 

当要添加的子视图控制器已经包含在视图控制器容器中,那么,相当于先从父视图控制器中删除,然后重新添加到父视图控制器中。 

2、removeFromParentViewController 方法 
- (void)removeFromParentViewController 
从父视图控制器中删除。 

3、transitionFromViewController 方法 
- (void)transitionFromViewController:(UIViewController 
*)fromViewController toViewController:(UIViewController 
*)toViewController duration:(NSTimeInterval)duration 
options:(UIViewAnimationOptions)options animations:(void 
(^)(void))animations completion:(void (^)(BOOL finished))completion 
交换两个子视图控制器的位置(由于添加的顺序不同,所以子试图控制器在父视图控制器中存在层次关系) 

fromViewController:当前显示的子试图控制器,将被替换为非显示状态 

toViewController:将要显示的子视图控制器 

duration:交换动画持续的时间,单位秒 

options:动画的方式 

animations:动画Block 

completion:完成后执行的Block 

4、willMoveToParentViewController 方法 
- (void)willMoveToParentViewController:(UIViewController *)parent 
当一个视图控制器从视图控制器容器中被添加或者被删除之前,该方法被调用parent:父视图控制器,如果没有父视图控制器,将为nil 

注意点: 

- 
当我们向我们的视图控制器容器中调用removeFromParentViewController方法时,必须要先调用该方法,且parent参数为nil: 

[将要删除的视图控制器 willMoveToParentViewController:nil]; 

- 当我们调用addChildViewController方法时,在添加子视图控制器之前将自动调用该方法。所以,就不需要我们显示调用了。 

5、didMoveToParentViewController 方法 
- (void)didMoveToParentViewController:(UIViewController *)parent 
当从一个视图控制容器中添加或者移除viewController后,该方法被调用。 

parent:父视图控制器,如果没有父视图控制器,将为nil 

当我们向我们的视图控制器容器(就是父视图控制器,它调用addChildViewController方法加入子视图控制器,它就成为了视图控制器的容器)中添加(或者删除)子视图控制器后,必须调用该方法,告诉iOS,已经完成添加(或删除)子控制器的操作。 

removeFromParentViewController 方法会自动调用了该方法,所以,删除子控制器后,不需要在显示的调用该方法了。 

其实,这几个方法中的API说明,看的还懂。 

二、关于willMoveToParentViewController方法和didMoveToParentViewController方法的使用 

1.这两个方法用在子试图控制器交换的时候调用!即调用transitionFromViewController 方法时,调用。 

2.当调用willMoveToParentViewController方法或didMoveToParentViewController方法时,要注意他们的参数使用: 

当某个子视图控制器将从父视图控制器中删除时,parent参数为nil。 

即:[将被删除的子试图控制器 willMoveToParentViewController:nil]; 

当某个子试图控制器将加入到父视图控制器时,parent参数为父视图控制器。 

即:[将被加入的子视图控制器 didMoveToParentViewController:父视图控制器]; 

3.无需调用[子视图控制器 willMoveToParentViewController:父视图控制器]方法。因为我们调用[父视图控制器 
addChildViewController:子视图控制器]时,已经默认调用了。 

只需要在transitionFromViewController方法后,调用[子视图控制器didMoveToParentViewController:父视图控制器]; 

4.无需调用[子视图控制器 didMoveToParentViewController:父视图控制器]方法。因为我们调用 

[子视图控制器 removeFromParentViewController]时,已经默认调用了。 

只需要在transitionFromViewController方法之前调用:[子视图控制器 
willMoveToParentViewController:nil]。 

经过这几点说明,在一些视图切换的过程中,和视图的换位中,应该可以了解什么时候去调用对应的视图啦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Thymeleaf视图控制器是指在Spring MVC应用程序中使用Thymeleaf作为视图解析器时,可以通过配置视图控制器来简化处理程序和视图之间的映射。 具体来说,Thymeleaf视图控制器可以将请求直接映射到Thymeleaf模板,而无需编写控制器代码。这样可以大大简化应用程序的配置和开发过程。 在Spring MVC应用程序中配置Thymeleaf视图控制器需要在配置类中添加以下代码: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/home").setViewName("home"); registry.addViewController("/login").setViewName("login"); } } ``` 在上面的示例中,我们将“/home”请求映射到“home”模板,将“/login”请求映射到“login”模板。这样,当用户访问“/home”时,将直接渲染“home”模板,而无需使用控制器来处理请求。 ### 回答2: Thymeleaf是一个服务器端Java模板引擎,用于构建web应用程序的视图层。它遵循面向模板的设计思想,将模板和数据进行分离,通过填充模板来生成最终的HTML页面。 视图控制器是一个用于处理请求和返回响应的组件。在Thymeleaf中,视图控制器用于将请求映射到相应的视图,并处理视图中需要的数据。它负责接收来自用户的请求并确定需要显示的页面,然后将数据传递给该页面进行处理并返回给用户。 Thymeleaf视图控制器的主要作用是: 1. 路径映射:根据请求的URL路径将请求映射到对应的视图。通过在控制器中配置路径和对应的视图模板,Thymeleaf可以根据URL路径自动寻找匹配的视图,并将请求的数据填充到视图中。 2. 数据传递:将请求中的数据传递给视图进行处理。视图控制器可以从请求中获取参数、表单数据等信息,并将这些数据传递给视图进行处理。这样可以灵活地在视图中使用这些数据,并展示给用户。 3. 视图渲染:将处理后的数据填充到视图模板中,并将最终的HTML页面返回给用户。Thymeleaf视图控制器负责将数据填充到视图中的相应位置,并将处理后的HTML页面返回给用户。这样用户就可以在浏览器中看到经过处理的页面。 总之,Thymeleaf视图控制器在web应用程序中起着重要的作用,它能够根据请求的URL路径映射到相应的视图,并且能够处理传递给视图的数据。它使得开发人员可以更方便地构建和管理视图层,提高了开发效率和代码的可维护性。 ### 回答3: Thymeleaf是一种模板引擎,用于在后端和前端之间处理页面的渲染和数据绑定。它支持HTML,XML,JavaScript,CSS等各种页面,并且可以与Spring框架无缝集成。Thymeleaf作为视图控制器,主要负责处理请求并将结果返回给用户。 Thymeleaf视图控制器的作用是将请求映射到相应的处理方法,并根据处理方法的返回结果选择合适的视图进行渲染。在Spring MVC中,我们可以通过配置Thymeleaf视图控制器来指定处理方法视图的映射关系。 Thymeleaf视图控制器有以下几个主要的配置选项: 1. Url映射:我们可以定义一个或多个Url的模式,将其映射到特定的处理方法。例如,可以将"/home"映射到HomeController中的home方法。 2. 视图名称:对于处理方法返回的结果,我们可以指定要渲染的视图的名称。这个名称通常与页面的逻辑地址对应。 3. 视图前缀和后缀:Thymeleaf视图控制器还可以配置视图的前缀和后缀。这些前缀和后缀会与视图名称组合在一起,以确定最终的视图文件。 4. 视图解析器:Thymeleaf视图控制器需要使用视图解析器来解析视图的名称和位置。我们可以配置一个或多个视图解析器,以便根据不同的策略来查找和渲染视图。 通过配置Thymeleaf视图控制器,我们可以轻松地将请求映射到相应的处理方法,并渲染正确的视图返回给用户。Thymeleaf简化了开发人员在后端和前端之间的交互,提高了开发效率,同时也使页面的渲染和数据绑定变得更加灵活和可定制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值