`
wsqwsq000
  • 浏览: 689887 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

慎用ViewController的跳转

 
阅读更多

 

慎用ViewCtrl的跳转!

 

搞iphone开发的,应该都知道MVC,顶半边天的UIViewCtrl,区分好Modle、View、Controller各自的作用。这里要提醒的是,勿滥用UIViewCtrl的跳转。

 

从一个Controller跳转到另一个Controller时,一般有以下2种:

1、利用UINavigationController,调用pushViewController,进行跳转;这种采用压栈和出栈的方式,进行Controller的管理。调用popViewControllerAnimated方法可以返回。


2、利用UIViewController自身的presentModalViewController,进行跳转;调用dismissModalViewControllerAnimated方法可以返回。


然而这2种UIViewCtrl的跳转,其实并没有释放原有的Controller(可以在delloc输出日志或利用Instruments查看程序内存)。所以要小心使用,一般有以下3个注意点:


1、小心死循环或死胡同,如:有2个Controller,第一个跳转调用第二个,第二个在某些特殊情况下又会调用和展现第一个Controller,这样就有可能导致死循环或占用太多内存而退出程序。


2、生物链不要太长。所谓生物链就是像下面这种形式:

ctrl1->ctrl2->ctrl3->ctrl4->ctrl5...

应该换成:

ctrl1->ctrl2

ctrl1->ctrl3

ctrl1->ctrl4

ctrl1->ctrl5

...


3、Controller中的View太多或图片太多,尽量不要将它压栈,应该尽量用完就释放它(这种出现的可能性比较大,我之前也遇到过,一开始还以为是内存泄漏)


上面所述乃个人愚见,欢迎拍砖!

 

分享到:
评论

相关推荐

    IOS学习之UiViewController带值跳转以及协议的实现

    4. 设置代理:在跳转前,将接收数据的UIViewController设为源ViewController的代理。 ```swift override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "MySegueIdentifier...

    viewController的跳转动画

    在iOS开发中,`UIViewController`的跳转动画是构建用户界面和提升用户体验的重要一环。动画不仅能够使得应用更具吸引力,还能帮助用户更好地理解屏幕之间的导航关系。在本篇文章中,我们将深入探讨如何在iOS中实现`...

    iOSm界面跳转和参数传递之presentViewController与dismissViewControllerAnimated

    总之,`presentViewController`和`dismissViewControllerAnimated`是iOS开发者在实现界面跳转时常用的方法。结合不同的参数传递方式,我们可以构建流畅的用户体验并有效地管理应用状态。在实际项目中,选择合适的...

    ios-封装了viewController页面跳转常用的动画.zip

    本资源"ios-封装了viewController页面跳转常用的动画.zip"聚焦于如何优雅地实现UIViewController之间的过渡效果,通过自定义动画使应用更具吸引力。下面我们将深入探讨这个主题。 首先,了解iOS中的视图控制器...

    导航控制器presentViewController

    比如,从一个列表详情页跳转到评论编辑页,评论编辑页不参与导航栈的管理。 2. **动画效果**:你可以通过`animated`参数控制是否启用过渡动画。默认情况下,这个参数为`true`,会提供一个平滑的过渡效果。 3. **...

    iOS之presentViewController模态全屏适配解决方案.docx

    iOS之presentViewController模态全屏适配解决方案 .isPresentViewController模态全屏适配是iOS开发中的一项重要技术问题。从iOS 13.0开始,默认的模态显示视图从全屏变成了Sheet卡片样式的非全屏模式。这使得许多...

    ViewController.m

    ViewController.m

    ios实现viewcontroller切换传值的三种方法

    当用户在应用程序中进行导航,例如从一个页面跳转到另一个页面时,我们往往需要将一些信息从当前的ViewController传递给即将显示的ViewController。这里我们将详细探讨三种在iOS中实现ViewController切换并传值的...

    presentViewController:如何不覆盖原先的viewController界面

    在iOS应用开发中,`presentViewController:animated:completion:` 是一个常用的方法,用于将一个新的视图控制器(UIViewController)呈现到当前的视图控制器之上。然而,通常情况下,这个方法会完全遮挡掉原先的视图...

    两个viewcontroller的界面切换

    "两个viewcontroller的界面切换"这一主题涉及到如何在iPhone应用程序中平滑地从一个ViewController过渡到另一个,同时实现动画效果,以提供良好的用户体验。在这个过程中,我们可以使用多种方法来实现这种切换,包括...

    iOS开发中ViewController的页面跳转和弹出模态

    页面跳转和模态弹出是ViewController的主要交互方式,帮助用户在应用的不同功能间导航。 页面跳转通常有两种常见方式: 1. **利用UINavigationController进行跳转**: UINavigationController是一个容器控制器,...

    IOS强制子VIEWCONTROLLER为横屏

    本篇文章将深入探讨如何在iOS应用中实现"强制子ViewController为横屏"的需求,同时确保父ViewController保持竖屏状态。 首先,我们需要理解iOS设备的屏幕方向管理机制。iOS系统通过UIDevice的orientation属性和...

    半透明ViewController

    在iOS开发中,半透明(或称为玻璃效果)的ViewController是一种常见的设计手法,它能够为用户界面增添一种轻盈、通透的视觉感受。这种效果通常通过调整ViewController的背景或者子视图的透明度来实现,同时还可以...

    自定义presentViewController的转场动画(Swift)

    本篇文章将深入探讨如何在Swift中自定义`presentViewController`的转场动画,帮助开发者创建出独特且吸引人的界面过渡效果。 首先,我们需要了解`UIViewControllerTransitioningDelegate`协议。这个协议提供了...

    swift-实现类似于Facebook的滑动和滚动拉消失的Viewcontroller

    在iOS应用开发中,创建一个类似Facebook的用户体验是常见的需求,其中包括Viewcontroller的滑动和滚动拉消失效果。这种效果允许用户通过向上滑动或滚动来渐隐当前ViewController,通常是展示详细信息或对话框时,...

    objectivec view controller跳转

    本篇文章将深入探讨Objective-C中`UIViewController`的视图控制器跳转方法,特别是与相机应用相关的实例。 首先,我们来了解一下`UIViewController`的基本导航操作。在iOS应用中,视图控制器间的跳转主要有以下几种...

    viewController管理

    集中管理 VC 的 方法类 集中管理 VC 的 方法类集中管理 VC 的 方法类集中管理 VC 的 方法类集中管理 VC 的 方法类集中管理 VC 的 方法类集中管理 VC 的 方法类集中管理 VC 的 方法类

    使用Delegate在两个ViewController间传值

    在不同视图控制器(ViewController)之间传递数据,我们可以采用多种方法,其中一种常见且灵活的方式就是使用委托(Delegate)协议。本篇将详细介绍如何在两个ViewController之间利用委托协议进行值传递,以及它与...

    ios app实现xib之间的跳转

    在iOS中,通常使用UIStoryboardSegue或通过代码调用presentViewController来实现界面间的跳转。对于XIB之间的跳转,我们可以有以下几种方式: 1. 使用UIStoryboardSegue(适用于Storyboard) - 在Interface ...

    利用delegate进行ViewController之间的参数传递

    在iOS开发中,ViewController之间的参数传递是一个常见的需求。在Objective-C和Swift中,我们可以通过多种方式来实现这一功能,如代理(Delegate)、通知(Notification)、KVC(Key-Value Coding)、Block、闭包...

Global site tag (gtag.js) - Google Analytics