本文主要介绍了iOS开发中ViewController的页面跳转和弹出方式。ViewController是MVC开发模式中的重要类,有需要的朋友可以参考一下。
ViewController 页面跳转
当从一个控制器跳到另一个控制器时,通常有以下两种类型:
1.使用UINavigationController,调用pushViewController进行跳转;这样,通过堆叠和弹出的方式来管理控制器。调用popViewControllerAnimated方法返回。
复制代码如下:
picgimageviewcontroller * ickImageViewController=[[picgimageviewcontroller alloc]init];
[self . navigation controller pushViewController:ickImageViewController animated:true];
【ickImageViewController发布】;
2.使用UIViewController自带的presentModalViewController进行跳转;调用dismissmodalviewcontrolleranimed方法返回。
复制代码如下:
picgimageviewcontroller * ickImageViewController=[[picgimageviewcontroller alloc]init];
[self presentModalViewController:ickImageViewController动画:是];
//返回
[self dismissModalViewControllerAnimated:是];
有模式地呈现视图控制器
一、主要用途
弹出模态ViewController是IOS开发中非常有用的技术。UIKit提供了一些专门用于模态显示的视图控制器,如UIImagePickerController等。弹出模态ViewController主要用于以下情况:
1.收集用户输入信息。
2.某些内容的临时呈现
3.临时改变工作模式。
4.改变相应设备的方向(用于两个ViewController用于不同方向的情况)
5.显示新的视图级别。
这些情况会暂时中断程序的正常执行过程,主要作用是收集或显示一些信息。
二、几个概念和常用设置
1、presenting view controller Vs presented view controller
当我们在视图控制器A中显示视图控制器B时,A充当呈现视图控制器(弹出VC),B是呈现视图控制器(弹出VC)。官方文件提出,两者之间的互动可以通过委托来实现。如果使用UIimagePickerController从系统相册中选择照片或拍摄照片,我们可以发现imagePickerController与弹出它的VC之间的交互是通过UIimagePickerController Delegate实现的。所以在实际应用中,我们最好遵守这个原则,在弹出的VC中定义delegate,然后在弹出的VC中实现agent,这样两者的交互就可以更方便的实现。
2、Modal Presentation Styles(弹出风格)
通过设置呈现VC的modalPresentationStyle属性,可以设置视图控制器弹出时的样式。有以下四种样式,定义如下:
复制代码如下:
typedef枚举{
uimodalpresentationfull screen=0,
UIModalPresentationPageSheet,
UIModalPresentationFormSheet,
UIModalPresentationCurrentContext,
} UIModalPresentationStyle
UIModalPresentationFullScreen是指当VC被弹出时,呈现的VC是满满的全屏。如果弹出的VC的wantsFullScreenLayout设置为YES,则在状态栏下填充,否则不在状态栏下填充。
UIModalPresentationPageSheet是指当VC被弹出时,呈现的VC的高度和宽度与当前屏幕的高度和宽度相同,剩余未覆盖的区域会变暗,阻止用户点击。在这种弹出模式下,垂直屏幕的效果与UIModalPresentationFullScreen相同,而水平屏幕则会在两侧留下变暗的区域。
在这种模式下,呈现的VC的高度和宽度将小于屏幕尺寸,呈现的VC将显示在中央,在其周围留下一个黑暗的区域。
在UIMapRepresentation current context模式下,呈现VC的弹出方式与呈现VC的父VC相同。
四种方法在iPad上都有效,但在iPhone和iPod touch上,系统一直以UIModalPresentationFullScreen模式显示presented VC。
3、Modal Transition Style(弹出时的动画风格)
通过设置presented VC的modalTransitionStyle属性,可以设置presented VC弹出时场景切换动画的样式,定义如下:
复制代码如下:
typedef枚举{
UIModalTransitionStyleCoverVertical=0,
uimodal transitionstylefliphorizontal,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl,
} UIModalTransitionStyle
我们可以看到有四种风格可供选择:从底部滑入、横向翻入、交叉溶解和翻页。四种风格不受设备限制,即无论是iPhone还是iPad,都会按照我们指定的风格显示过渡效果。
4、Dismiss Modal ViewController(消失弹出的VC)
消失呈现在VC中,我们可以通过调用以下两个函数中的任何一个来实现
复制代码如下:
MissModalviewControlleranimated://它将被放弃,不建议继续使用。
dismissViewControllerAnimated:完成:
谁会调用这种消失已呈现VC的方法:正确的做法是“谁污染谁治理”,即呈现VC调用上述方法取消已呈现VC的显示。这样做的好处是,如果一个VC真的没有让用户做出不同的选择,可能会弹出不同的视图控制器。当不再需要显示弹出的视图控制器时,可以直接调用【self dissmissimodalviewrolled】使其消失,而不管它具体显示的是哪种视图控制器。当然,系统在这里做了优化。当我们在presented VC中调用上述方法时,系统会自动将此消息传递到对应的Presented VC中,这样无论是谁弹出来的,在不再需要时都可以直接消失。在应用上,要看具体情况。如果presented VC需要与presented VC进行数据传输,建议在presented VC实现的代理函数中解除弹出视图控制器。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。