翻译:iOS视图调节器编制程序指南(五)——完结容器视图调整器(Implementing a Container View Controller)

营造容器视图调控器的提出

设计、开拓和测验新容器视图调控器需求时间。尽管个体行为总结,调控器作为一个安然无事也许优异复杂,完成团结的器皿类时思量以下提出:

·
只访谈子视图调节器的根视图。容器应该只访问每种子视图调整器的根视图,即再次来到子视图的视图属性。它不应有访谈子视图调控器的任何视图。

·
子视图调节器不用通晓容器。子视图调控器应该关爱本身的内容。假诺容器允许其行事被子视图调控器影响,应该选代替理形式来管理那个交互。

·
刚开始阶段利用普通视图设计你的容器。利用普通视图(实际不是子视图调节器的视图)令你能够测验布局约束和省略境况连片动画。当普通视图如预期那样行事,移除子视图调节器的视图。

Presentation Styles

presentation style
是叁个视图调节器管理其荧屏上的外观。UIKit定义了重重专门的职业的present风格,每一个都有一定的外观和意向。你也足以定义自定义present风格。当设计你的选择时,为您的使用采取适当的present风格,并为要present的视图调整器的
modalPresentationStyle品质分配适合的常数。

子视图调节器间的连接

当需求子视图调控器过渡到另贰个视图调节器的动画片,结合子视图调节器的增进和删除到连片动画进度。在动画以前,确认保障七个子视图调控器是内容的一局地,让近年来的子视图消失。在动画进程中,移动新子视图调控器到相应的职位并删除旧的子视图调整器。在动画完成之后,删除子视图调控器。

应用过渡动画,列表5-3
展现了什么样子视图调整器的切换。在那么些事例中,新视图调控器步入到当下子视图调整器攻陷的矩形中,该子视图移动到荧屏之外。在动画完结后,实现block从容器中除去子视图调节器。在那一个事例中,transitionFromViewController:toViewController:duration:options:animations:completion:
方法自动更新容器视图层级结构,所以不要求协和丰富和删除视图。

列表5-3 三个子视图调节器间的衔接<pre><code>-
cycleFromViewController: (UIViewController) oldVC toViewController:
(UIViewController
) newVC {// Prepare the two view controllers for the
change.[oldVC willMoveToParentViewController:nil];[self
addChildViewController:newVC];

// Get the start frame of the new view controller and the end frame // for the old view controller. Both rectangles are offscreen. newVC.view.frame = [self newViewStartFrame]; CGRect endFrame = [self oldViewEndFrame]; // Queue up the transition animation. [self transitionFromViewController: oldVC toViewController: newVC duration: 0.25 options:0 animations:^{ // Animate the views to their final positions. newVC.view.frame = oldVC.view.frame; oldVC.view.frame = endFrame; } completion:^(BOOL finished) { // Remove the old view controller and send the final // notification to the new view controller. [oldVC removeFromParentViewController]; [newVC didMoveToParentViewController:self]; }]; } 

</pre></code>

dismiss二个presented的视图调控器

调用presenting视图调整器的dismissViewControllerAnimated:completion:措施来dismiss八个presented的视图调节器。你能够在presented视图调节器本人的点子。当presented视图调整器调用该办法,UIKit自动转载呼吁到presenting视图调节器。

在dismiss视图调整器前保存任何重大音信。dismiss视图调节器会将其从视图调整器层级结构删除并从荧屏上删除视图。假诺在其余地点存放的视图调控器未有强援用,dismiss该视图调整器会放出与之提到的内部存款和储蓄器。

倘诺presented视图调节器必需回到数据到presenting视图调控器,使用
delegation
设计格局来成功传递。代理使应用视图调整器的选定更便于。使用代理,presented视图调控器存款和储蓄代理对象的援引,完成正式protocol的办法。Presented视图调节器在代理调用这个办法用于采集结果。在独立的贯彻中,presenting视图调整器作为presented视图调节器的代理。

福寿齐天一个自定义容器视图调控器

达成二个容器视图调整器,你无法不建构视图调节器和其子视图调控器之间的涉嫌。在您视图管理任何子视图调整器的视图前必须建设构造那几个父亲和儿子关系。那样做让UI基特知道视图调节器在管理子视图的大小和地点。能够在分界面创设器中开创大概以编制程序的不二秘技创立。当以编制程序格局成立时,必需显式的增进和删除子视图,作为视图调控器设置的一局地。

The Current Context Styles

UIModalPresentationCurrentContext
风格在分界面覆盖了叁个非正规的视图调整器。当使用contextual风格,通过安装
definesPresentationContext属性为YES,钦赐要遮蔽的视图调控器。图8-3认证了current
context 只覆盖分屏视图调整器的叁个子视图调控器。

图片 1

图8-3 当前情形present风格

注意

当使用UIModalPresentationFullScreen作风present二个视图调控器,UIKit常常在联网动画完毕后删除底层视图调整器的视图。能够设置UIModalPresentationOverCurrentContext作风,防止删除那个视图。当present的视图调控器有透明区域让底层内容显示时,可以采纳该风格。

概念视图调节器还足以在present进程中定义过渡动画。日常,当使用present视图调整器的
modalTransitionStyle属性,UIKit渲染视图调节器到显示屏。假如present
context视图调控器的
providesPresentationContextTransitionStyle值设为YES,UIKit命全权大使用视图调节器的modalTransitionStyle个性取代。

当过渡到水平紧凑的条件,current context风格接纳
UIModalPresentationFullScreen
风格。为了转移该作为,使用自适应present委托钦赐分化的present风格或视图调控器。

事例:分屏视图调节器

UISplitViewController对象以基本结构彰显多个视图调节器的源委。在这种布局中,视图调节器决定其余视图调整器凸显的细节。三个视图调控器是不是可知能够由近期意况安顿。在正规水平情形中,分屏视图调节器能够并排展现四个子视图调节器,也许隐敝主视图并在急需时展示。在紧密情形中,分屏视图调节器一遍只显示二个视图调控器。

图5-2
展现了分屏视图分界面结构和在常规水平遇到中的视图。分屏视图调整器默许意况下唯有容器视图。在这一个例子中,多少个子视图并排显示。子视图的尺寸可配置,主视图是还是不是可知也足以配备。

图片 2图5-2
分屏视图分界面

The Popover Style

UIModalPresentationPopover作风以弹出窗口的主意呈今后视图调整器上。popover用于显示额外音讯或项目列表中选中的指标。在横向常规碰到中,popover视图仅覆盖荧屏的一局地,如图8-2所示。在横向紧密情形中,popover私下认可选择UIModalPresentationOverFullScreen
present格局。在popover视图外点击, popover视图将自行dismiss。

图片 3

图8-2 弹窗present风格

因为在等级次序紧密景况中,popover选用full-screen
的present方式,常常要求修改popover代码管理适配。在full-screen格局,供给一种办法dismiss掉present的popover。你能够透过抬高三个按键,将popover嵌入到就要dismiss的容器视图调控器,也许更动自适应行为本身。

怎么样安顿弹窗,参见在视图调控器上present弹窗( Presenting a View
Controller in a
Popover
)。

容器视图调节器能够将多个视图调节器的剧情结合到叁个客户分界面。容器视图调控器平时用于推进导航和基于现存内容创立新的顾客分界面。UIKit中容器视图调控器的例子包涵UINavigationController,
UITabBarControllerUISplitViewController,全体那几个视图方面在不一致顾客界面直接导航。

Full-Screen Presentation Styles

Full screen presentation
styles覆盖全部荧屏,幸免与底层内容交互。在档期的顺序常规情形中,唯有full-screen
styles完全覆盖了尾巴部分内容。别的变暗或有折射率的视图允许有的平底视图调节器显示。在档期的顺序紧密碰着中,full-screen
present格局自行选拔UIModalPresentationFullScreen风格并覆盖全部底层内容。

图8-1
表明在档期的顺序常规情形使用UIModalPresentationFullScreen,UIModalPresentationPageSheetUIModalPresentationFormSheet风格present情势的外观。在图中,在左上角的木色视图调节器present在右上角的深翠绿视图调控器,各样present风格如下。对于一些present风格,UIKit在七个视图调整器内容之间插入多少个半透明视图。

图片 4

图8-1 全屏present风格

注意

当使用UIModalPresentationFullScreen作风present多少个视图调节器时,UIKit常常在成功交接动画后删除底层视图调控器的视图。你能够经过点名UIModalPresentationOverFullScreen作风防止删除那么些视图。当present的视图调整器有透明区域让底层内容突显时得以选择这种作风。

当使用一种present
风格时,视图调整器运营的present必得覆盖全体荧屏。假设就要present的视图调节器不可能覆盖全部荧屏,UI基特遍历视图调节器层级直到找到贰个覆盖整个荧屏的视图调控器。尽管不能够找到一个在那之中央广播台图调节器充满显示器,UIKit使用窗口的根视图调整器。

在分界面营造器中安顿一个器皿

在设计时,要开创二个老爹和儿子容器关系,将容器视图对象增添到你的旧事版中,如图5-3。容器视图对象是四个占位符对象,用来表示子视图调控器的内容。遵照容器中的别的视图,用该视图来决定子视图调控器的分寸和职位。

图片 5图5-3
在创设器中增加容器视图

当你加载二个有三个或两个容器视图的视图调节器时,分界面创设器也加载那么些视图的相关子视图调节器。这几个子视图调控器必得在父视图实例化的时候实例化,那样才具创立父亲和儿子关系。

若果您不适用分界面营造器设置老爹和儿子容器关系,你必得以编程的格局创建这几个关系,将各类子视图增添到容器视图调控器上,详细的情况见增加子视图调控器到剧情(
Adding a Child View Controller to Your Content)。

present在分化storyboard种概念的视图调控器

即便如此在同一storyboard中的八个视图调控器之间能够创制segue,但在差别storyboard中不能够创设segue。当你指望呈现存款和储蓄在另贰个storyboard中的视图调节器时,你无法不在present以前显式的实例化该视图调整器,如列表8-2所示。例子以模态的点子present视图调节器,但您可以push它到导航调控器或以其余艺术展现。

列表8-2 加载storyboard中的视图调节器

<pre><code>

  1. UIStoryboard* sb = [UIStoryboard
    storyboardWithName:@”SecondStoryboard” bundle:nil];
  2. MyViewController* myVC = [sb
    instantiateViewControllerWithIdentifier:@”MyViewController”];
    1. // Configure the view controller.
    1. // Display the view controller
  3. [self presentViewController:myVC animated:YES completion:nil];
    </pre></code>

未曾需求您不能够不在利用中开创两个storyboard。不过,在这边有一部分状态下多少个storyboard恐怕使得:

  • 您有三个大的编制程序共青团和少先队,分化的客商分界面分配给团队的比不上部分。各样协会有着分裂的storyboard文件以减掉冲突。
  • 您购买或创立一个库预约义了视图调节器类型会集;那么些视图调整器的内容定义在库中的storyboard中。
  • 您有亟待在显示器外出示的原委。在这种情景下,你或然维持全部视图调控器与单独storyboard的视图调节器相关。一样场景的另一种形式是编写制定一个自定义segue。

删去子视图调整器

从内容中去除子视图调控器,通过以下几点删除视图调控器之间的父子关系:

  1. 调用子视图调节器的 willMoveToParentViewController:措施并设置值为nil。

  2. 删去子视图调控器根视图配置的其余约束。

  3. 从容器视图层级中去除子视图调整器根视图。

  4. 调用子视图的 removeFromParentViewController方法删除父亲和儿子关系。

删除子视图调整器会永恒删除父视图和子视图之间的涉嫌。当您不再必要它时,删除子视图调节器。比如,当新视图控制器push到导航货仓时,导航调节器不移除当前子视图调控器。唯有当他俩被pop出栈时才会被删去。

列表5-2
呈现了怎样从容器中除去子视图调节器。调用willMoveToParentViewController:措施,使子视图调节器有变动的时机。removeFromParentViewController
方法一致会调用子视图的didMoveToParentViewController:
方法,传递该方法值为nil。设置父视图调控器为nil,从容器中去除子视图。

列表5-2 从容器中删除子视图调节器<pre><code>

-hideContentController: (UIViewController*) content {

[content willMoveToParentViewController:nil];

[content.view removeFromSuperview];

[content removeFromParentViewController];

}</pre></code>

UIViewController
类支持present视图调节器,可用于全数的视图调节器对象。你能够在其他别的视图调控器上present任何三个视图调节器,固然UIKit恐怕重新路由该须求到不一样的视图调节器上。present视图调节器会在原始视图调节器之间创造关系,原始视图调节器称为
presenting view controller,展现的新视图调控器称为presented view
controller
。那一个关系是视图调整器层级结构的一有的,直到presented视图调整器被dismiss。

增多子视图调节器到内容

以编制程序的法子将子视图调控器合併到内容,通过以下几点创制连锁视图调整器的父亲和儿子关系:

  1. 调用容器视图调节器的 addChildViewController:方法

该格局告诉UIKit,容器视图调节器管理子视图调控器的视图。

2.增加子视图调控器的根视图到容器视图调控器的视图档案的次序结构。

纪念设置子视图的轻重缓急和岗位。

3.增多约束管理子视图的根视图的分寸和地点。

4.调用子视图调整器的didMoveToParentViewController:方法。

列表5-1展现了安置子视图调整器的器皿。建设构造老爹和儿子关系后,容器设置子视图调整器的frame,并将子视图增多到本身的视图层级中。设置子视图的frame很注重,确认保证视图在容器中国中国科学技术大学学学展现。增加视图后,容器调用子视图的didMoveToParentViewController:艺术使子视图调控器响应视图的改造。

列表5-1
加多子视图调整器到容器<pre><code>-displayContentController:(UIViewController*)
content{

[self addChildViewController:content];

content.view.frame = [self frameForContentController];

[self.view addSubview:self.currentClientView];

[content didMoveToParentViewController:self];

}</pre></code>

在这段时间的例证中,注意你只调用子视图的didMoveToParentViewController:
方法。那时因为addChildViewController: 方法会调用
willMoveToParentViewController:格局。必得调用是因为didMoveToParentViewController:
方法不会友善调用直到将子视图嵌入到容器视图层级中。

当使用机关布局时,在增多子视图到容器视图层级结构后,在容器和儿女之间建立约束。约束会影响子视图调节器根视图的轻重缓急和岗位。不更改根视图的开始和结果或子视图层级结构中的其余视图。

Custom Presentation Styles

UIModalPresentationCustom作风使用自定义的作风present视图调控器。成立三个自定义风格满含子类化UIPresentationController
,使用其情势来渲染任何自定义视图到荧屏上并设置present视图调节器的尺寸和地方。present调节器还管理由于视图调节器的trait变化引起的适配。

何以定义自定义present视图调整器的信息,参见创设自定义present( Creating
Custom
Presentations
)。

规划自定义容器调整器

容器视图调控器就像是其余任何内容视图调控器那样管理四个根视图和某些剧情。不一致的是容器视图调节器的部分内容来自其余视图调整器。内容只限于其余视图调控器的视图,它放到到协和的视图层级。容器视图调节器设置任何嵌入视图的轻重和任务,但原始视图调整器如故管理这么些视图中的内容。

当设计和睦的器皿视图调控器时,你须求精通容器和富含视图调节器。视图调控器间的涉及能够扶持驾驭它们的内容appearance在显示屏上,容器在里面怎么着保管它们。在图谋进度中,自问以下难点:

· 容器的作用及容器的子类的功用?

· 能同期展现多少个子视图?

· 同级视图调控器之间的涉及?

· 子视图调控器是怎么样加多到容器中,或许从容器中删除?

· 能够修改子视图的大大小小和职分?在怎么着动静下会时有发生改变?

· 容器提供任何装修或导航视图?

·
在容器和子视图间须要什么的通讯格局?容器需求报告特定事件到子视图或许UIViewController类定义的行业内部视图?

· 容器的appearance是或不是能够以差别格局安插?假设得以,如何安插?

在概念了种种对象的职能后,容器视图调控器的完结绝对简便易行。UIKit独一的渴求正是在容器视图调节器和其余子类视图调整器之间营造四个专门的学问的父子关系。老爹和儿子关系确定保障子视图接收到任何相关的系统新闻。除了这几个之外,超过四分之二的实际上职业产生在布局和管理满含的视图进程中,各样视图都差异样。你能够在容器中的任何区域放置视图,设置视图的高低。也能够增多自定义视图到视图层级结构用于装修仍然接济导航。

法定原作地址:

https://developer.apple.com/library/prerelease/ios/featuredarticles/ViewControllerPGforiPhoneOS/PresentingaViewController.html\#//apple\_ref/doc/uid/TP40007457-CH14-SW1

事例:导航调节器

UINavigationController
对象通过等级次序结构数据集匡助导航。叁个导航分界面二回present四个子视图调控器。分界面最上端的导航栏呈现数据档期的顺序结构的当下地方并展现叁个后退按键再次回到到上超品级。

视图调整器之间的领航由导航调节器和其子类管理。当顾客与开关或子视图调控器表中某行交互时,子类访谈导航调整器push三个新视图调整器。子类管理新视图调控器内容,但导航调控器管理过度动画。导航调整器也管理导航栏,彰显贰个回到开关,用于dismiss顶层视图调节器。

图5-1
展示了领航调节器和其视图的结构。大多数剧情区域是由最顶层子视图调控器和小部分导航栏组成。

图片 6图5-1
导航界面结构

在紧密和健康碰到中,导航调控器三次只呈现一个子视图调控器。导航调控器调治其子视图适应可用空间。

显示视图调控器

当使用和形式,获得显示屏上多少个新的视图调控器的进度很轻易:

  1. 创造你愿意present的视图调节器对象。当创立视图调控器时,你承担开始化它实行其他所需的任何数据。
  2. 安装新视图调整器的
    modalPresentationStyle质量是首推present风格。该风格恐怕不用于最后的present。
  3. 安装视图调控器的modalTransitionStyle属性设置所需的联网动画风格。该风格大概不用于最终的present。
  4. 调用当前视图调节器的
    showViewController:sender:showDetailViewController:sender:方法。

UIKit转发showViewController:sender:showDetailViewController:sender:
方法的调用给present视图调节器。视图调控器能够调节哪些最棒的实行present,何况能够依照需呀改变present和接通风格。比方,导航调控器大概push该视图调整器到导航仓库。

有关呈现视图调节器和以模态的方法present视图调控器的出入音讯,参见present和彰显视图调节器(
Presenting Versus Showing a View
Controller
)。

寄托控制子视图调控器

容器视图调节器能够委托appearance到八个或几个子视图调整器中。能够由此以下几点委托调控。

·
让子视图调控器决定状态栏风格。寄托状态栏appearance到子视图,覆盖容器视图调节器的childViewControllerForStatusBarStyle
childViewControllerForStatusBarHidden 方法。

·
让子视图调控器钦点自个儿的轻重。灵活布局的器皿能够动用子视图自身的preferredContentSize属性,以扶持调节子视图的大大小小。

https://developer.apple.com/library/prerelease/ios/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html\#//apple\_ref/doc/uid/TP40007457-CH11-SW1

Transition Styles

Transition风格决定用于浮现present视图调控器的卡通片类型。对于内置transition风格,你可以为present视图调整器的
modalTransitionStyle本性钦赐一种标准transition风格。当present视图调节器,UIKit创设相应的动画风格。举例,图8-4验证了规范slide-up过渡(UIModalTransitionStyleCoverVertical)怎样视图调控器渲染到显示屏上。视图调节器B开首在显示屏外,并掩饰到视图调节器A上。当dismiss视图调节器B,动画转换局面,B下滑流露A。

图片 7

图8-4 视图调整器的衔接动画

能够使用动画片对象和联网代理来创制自定义过渡。动画对象为显示器上停放的视图调整器创制过渡动画。过渡代理在适用的日子为UI基特提供动画对象。越来越多关于如何达成自定义过渡的新闻,参见自定义过渡动画(Customizing
the Transition
Animations
)。

管理子视图调整器appearance更新

增加子视图调控器到容器后,容器自动将相关appearance音讯传递给子视图。这平日是您愿意的行事,因为它确认保障全部事件正确发送。然则,一时候暗中同意行为可能按顺序发送一些不影响容器的风云。比如,假若七个男女同一时候改换她们的视图状态,希望加强那几个变化,那样能够同时遵照逻辑顺序实行appearance回调。

为了做到appearance回调,覆盖容器视图调整器的shouldAutomaticallyForwardAppearanceMethods
方法并回到NO,如列表5-4所示。再次回到NO使UIKit知道容器视图调控器公告其子视图调控器appearance变化。

列表5-4 禁止使用自行转接<pre><code>-
shouldAutomaticallyForwardAppearanceMethods {

return NO;

}</pre></code>

当appearance发生变化时,调用子视图控制器的
beginAppearanceTransition:animated:或endAppearanceTransition方法。举例,假若容器有子视图援用子视图属性,容器将这几个新闻转载给子视图,如列表5-5中所示。

列表5-5 当容器出现或消灭转载appearance新闻<pre><code>

  1. – viewWillAppear:animated {
  2. [self.child beginAppearanceTransition: YES animated: animated];
  3. }
    1. – viewDidAppear:animated {
  4. [self.child endAppearanceTransition];
  5. }
    1. – viewWillDisappear:animated {
  6. [self.child beginAppearanceTransition: NO animated: animated];
  7. }
    1. – viewDidDisappear:animated {
  8. [self.child endAppearanceTransition];
  9. }</pre></code>

以模态的主意present视图调整器

当直接present视图调整器,你要求告诉UIKit你期望视图调整器如何显示以及如何渲染到荧屏上。

成立你期望present的视图调节器对象。当创制视图调控器时,你承担开首化它实践其余所需的别样数据。

  1. 设置新视图调节器的
    modalPresentationStyle
    属性为所需的present风格。
  2. 安装视图调控器的
    modalTransitionStyle天性为所需的动画片风格。
  3. 调用当前视图调控器的
    presentViewController:animated:completion:方法。

调用presentViewController:animated:completion:
方法的视图调控器也许不是终极施行模态present的视图调节器。present风格决定了视图调节器如何被present,包含present视图调控器所需的特性。比如,三个全屏present必得由贰个全屏视图调控器运转。固然当前present视图调节器不相宜,UIKit遍历视图调控器层级直到找到适合的。完毕模态present后,UIKit更新受影响的视图调节器的presentingViewController
presentedViewController属性。

列表8-1
演示了怎么样以编制程序的办法present一个视图调整器。当客户拉长叁个新视图调整器,应用提示顾客输入present导航视图调控器的大旨新闻。被选中的导航调控器会在职业的地方停放八个注销和成就开关。使用导航调节器使扩张新分界面尤其便于。你所必要做的是push新视图调整器到导航货仓。

列表8-1 以编制程序的办法present两个视图调整器

<pre><code>

    • (void)add:(id)sender {
  1. // Create the root view controller for the navigation controller

  2. // The new view controller configures a Cancel and Done button for
    the
  3. // navigation bar.
  4. RecipeAddViewController *addController =
    [[RecipeAddViewController alloc] init];
    1. addController.modalPresentationStyle =
      UIModalPresentationFullScreen;
  5. addController.transitionStyle = UIModalTransitionStyleCoverVertical;
  6. [self presentViewController:addController animated:YES completion:
    nil];
  7. }
    </pre></code>

展现和连接的过程

present贰个视图调整器是一种高效而简易的方法在显示器上盛产新剧情。UIKit内置present机制,允许选取内置或自定义动画来展现贰个新的视图调控器。内置present和卡通须要非常少的代码因为UIKit管理了装有的劳作。你也足以很轻松的在别的视图调控器创制自定义present和动画片。

你能够以编制程序格局或应用segue来发起视图调控器的present。要是在安排时你领会应用的领航,segue是倡议present最简便的主意。越来越多动态分界面,也许未有特别的控件发起segue的场馆下,使用
UIViewController主意来present视图调节器。

以弹窗格局present视图调控器

在present视图调整器在此之前,popover供给额外的安排。在安装模态present风格为
UIModalPresentationPopover后,配置一下popover相关属性:

能够动用
UIPopoverPresentationController对象在须要时调治弹窗的外观。弹窗present调节器还协助代理对象,能够选择它来响应在present进度中的变化。举例,你能够行使代理来响应弹窗在荧屏上边世、消失或重复定位。关于该目的的越多消息,参见UIPopoverPresentationController类引用(UIPopoverPresentationController
Class Reference
)。

present视图调整器

有三种办法能够present视图调整器:

关于怎么着dismiss使用那个工夫present的视图调节的越来越多新闻,参见dismiss贰个presented的视图调整器(
Dismissing a Presented View
Controller
)。

在荧屏上海展览中心示视图调整器有三种格局:嵌入到容器视图调控器中也许present这几个视图调整器。容器视图调整器提供利用的尤为重要导航,但present视图调控器一样也是二个首要的领航工具。能够在当下的视图调整器上平素present三个新的视图调节器。经常,当你希望完结modal分界面时,能够present视图调节器,但您也能够动用它们用于别的用途。

present和出示三个视图调整器

UIViewController类提供二种艺术来显示二个视图调整器:

  • showViewController:sender:
    showDetailViewController:sender:办法为展现视图调控器提供最大限度的适应性和灵活性。这几个措施让present视图调整器决定哪些最佳的管理present。譬如,容器视图调控器大概合併视图调控器作为子视图调整器并非以模态的点子present。暗中同意以模态的主意present视图调控器。
  • presentViewController:animated:completion:
    方法总是以模态的不二等秘书技展现视图调节器。视图调整器调用这些艺术只怕不会最后管理present但两次三番以模态的法子present。在档案的次序紧密情状中,该办法运用该present风格。

showViewController:sender:showDetailViewController:sender:
方法是开行present的首要推荐办法。视图调控器能够调用它们,而不用驾驭别的关于视图调控器层级结构或当前视图调节器在层级结构的地点。那一个艺术使重用视图调节器尤其轻松,而不要求编写条件代码路径。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图