iOS开发笔记之ViewController视图控制器间的跳转

iOS开发进阶(十一):ViewController 控制器详解_ios开发 viewcontroller 容器还可以嵌套,比如把放进里面,这样在tab页面里,可以用启动导航栏样式的二级子页面。 阅读详情
开发中遇到的几种ViewController间的跳转,谨记视图控制器按照后进先出的堆栈方式叠加上去的
注意present和dismiss;push 和 pop 一般是成对存在的,底层VCdismiss或pop后上层的也会释放掉的


其中A,B,C均指普通的ViewController


案例一:(例如登录退出)
A-presentViewController->B-presentViewController->C


如何从 C dismissViewController 到 A 呢?如下:
    
    [self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
    
看看官方文档就知道
// The view controller that was presented by this view controller or its nearest ancestor.
@property(nonatomic,readonly) UIViewController *presentedViewController  NS_AVAILABLE_IOS(5_0);


// The view controller that presented this view controller (or its farthest ancestor.)
@property(nonatomic,readonly) UIViewController *presentingViewController NS_AVAILABLE_IOS(5_0);


打印一下发现
 C 的presentingViewController = <BViewController: 0x1556023b0>
及presentingViewController.presentingViewController = <AViewController: 0x155607a30>
试了一下
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
发现无法达到预期效果,估计应该要从最底层的释放方可


案例二:底层是NavigationController
naviA - push -> B -puch-> C-pusn-> D -push->E


这里我想从 E pop到任意一个VC该怎么办呢,先获取NavigationController上所有的VC,遍历到自己想要跳转的,跳过去就行,方法如下:
            NSArray *vcS=[self.navigationController viewControllers];
            [vcS enumerateObjectsUsingBlock:^(YourViewController* obj, NSUInteger idx, BOOL *stop) {
                if([obj isKindOfClass:[YourViewController class]]){
                    YourViewController* bin=(YourViewController*)obj;
                    [self.navigationController popToViewController:bin animated:YES];
                    *stop=YES;
                }
            }];




案例三:底层是NSTabBarViewController+ 多个NSNavigationController
需求是像微信那样不管是从朋友圈进去一直push到聊天界面还是从消息界面push到聊天界面,然后从聊天界面直接pop出来后总是显示在第一个tab的消息界面
做法是:在退出按钮按下时先设置tabBarViewController的selectItem=0,再popToRootViewController
iOSm界面跳转和参数传递之presentViewController与dismissViewControllerAnimated NULL 博文链接:https://stephen830.iteye.com/blog/2243853 立即下载

相关推荐

别再瞎选了!手把手教你根据车型等级,在CarSim里快速匹配最合适的动力学模型

本文详细介绍了如何在CarSim中根据车型等级快速匹配最合适的动力学模型,提升仿真效率。通过分析CarSim模型库与A/B/C/D级车标准的对应关系,提供四步精准定位方法和不同车型的特殊处理技巧,帮助工程师避免常见错误,显著缩短模型准备时间。

weixin_27015733的博客 262

详解iOS的presentViewController

一、用途和相关概念 iOS中显示ViewController的方式有两种push和modal,modal也叫模态,模态显示VC是iOS的重要特性之一,其主要用于有以下场景: - 收集用户输入信息 - 临时呈现一些内容 - 临时改变工作模式 - 相应设备方向变化(用于针对不同方向分别是想两个ViewController的情况) - 显示一个新的view层级 这些场景都会暂时中断APP的正常执行...

有山有水有点田的博客 4万+

Unity VR 零基础开发之 Pico4 MR

2、弹出弹窗后,点击Android选项,然后再点击Switch Platform按钮切换成安卓平台。3、切换完成后Android选项后面会显示unity图标。

十画的博客 5101

正确使用PresentModalViewController

Present ViewController Modally  一、主要用途   弹出模态ViewController是IOS变成中很有用的一个技术,UIKit提供的一些专门用于模态显示的ViewController,如UIImagePickerController等。弹出模态ViewController主要使用于一下这几种情形:   1、收集用户输入信息   2、临时呈现一些内容   ...

weixin_33966365的博客 2966

C51编程25-应用篇(单片机与电脑端实现wifi通讯)

单片机使用ESP-01S wifi模块与电脑端进行数据通讯。

qq_34343637的博客 1万+

【openGauss实战1】openGauss基于CentOS8的部署

基于openGauss数据库在CentOS8上的安装实践。

IT邦德 3050

关于iOS的presentingViewController&presentedViewController你真的懂了么

前段时间工作中,做一个获取顶层控制器组件的时候,遇到了在遍历导航栈的控制器后,再查找当前导航栈的顶层控制器,是否有模态出来的vc的问题。基于这个问题,我想大部分人第一时间想到的都是vc的presentingViewController,以及presentedViewController这两个属性。所以我也第一时间百度了一下,某篇文章赫然写着 假设 AVC 模态出来了(present)BVC。...

fanjiarong_919的博客 1738

Winform从入门到精通(1)——Label(史上最全)

本篇文章是对专栏《winform控件从入门到精通》的详细介绍

qq_34059233的博客 4万+

iOS开发进阶(十一):ViewController 控制器详解

iOS 界面开发最重要的首属和View是View的控制器,也就是一般的页面,用来管理页面的生命周期(它相当于安卓里的Activity,两者很像,但又有一些差异)。的特点是它有好几种。一种最基本的。所谓容器,就是它们本身不能单独用来显示,必须在里面放一个或几个。用于导航栏管理页面;用于底部tab管理页面;用于切换器管理页面;容器还可以嵌套,比如把放进里面,这样在tab页面里,可以用启动导航栏样式的二级子页面。

IT全栈 华强工作室 3062

串行RapidIO(Serial RapidIO,SRIO):协议介绍

目录一、RapidIO背景介绍二、RapidIO协议概述2.1 包与控制符号2.2 包格式2.4 消息传递2.5 全局共享存储器2.6 流量控制2.7 串行物理层三、I/O逻辑操作与包格式四、维护操作与包格式五、消息操作与包格式六、总结 本文是基于Xilinx平台SRIO介绍(一)RapidIO协议介绍的内容作读书笔记。 一、RapidIO背景介绍 RapidIO采用三层分级体系结构,包括逻辑层、传输层和物理层该分级结的如下图所示: ● 逻辑层:位于最高层,定义全部协议和包的格式,它们为端点器件发起和完

Starry__的博客 1万+

HyperLynx仿真(一)LineSim简单介绍

可以选择设置信号线与信号线之间默认的距离和信号线与同平面的平面之间的距离,这些设置根据工程师项目上经常使用的情况而设置,也可以选择不设置,在每次仿真时根据需要再对每一个仿真单独设置。仿真属性的设置对话框包含一般设置、 显示颜色设置、LineSim 设置、BoardSim 设置、 层叠默认设置、焊盘类型设置、仿真示波器默认设置、电路仿真器默认设置、电源完整性设置及高级设置。第一次使用HyperLynx软件时需要设置仿真相关环境,包括仿真软件的基本设置、模型库路径设置、仿真控制器控制、单位等。...

小幽余生不加糖 8952

「iOS」push与present

iOS界面推出与弹出的总结

2301_80253909的博客 1797

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IOS学习笔记31—两个ViewController间传值(二)

在上一篇 两个ViewController间传值(一)中说明了如何从A传值到B,这次要讲的是如何从A进入B,在B输入值后回传给A,这类似于Android中的利用Activity的onActivityResult回调方法实现两个Activity之间的值传递,那么在IOS中如何实现这个功能呢,答案是使用Delegate(委托协议)。 首先来看看工程结构图: 其中有两个ViewControl

Ryan's zone 3万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

iOS视图控制器(ViewController)

初始化和创建:为视图控制器分配内存和进行必要的初始化设置。加载视图:创建和设置视图控制器的根视图。视图加载完成:进行视图的初始化设置和子视图的添加,配置界面元素,设置数据源和代理等。视图即将显示:在视图即将显示在屏幕上时,执行一些界面更新和准备工作,如加载数据、注册通知等,以准备视图的显示。视图显示完成:当视图已经在屏幕上渲染完成时,执行与用户交互相关的操作和启动动画,如启动定时器、执行页面跳转后的逻辑处理、启动页面动画等。这个阶段是确保用户体验流畅性的关键时期。视图即将消失。

Chujun123528的博客 900

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ViewController 的常用跳转及返回方法

ViewController 的常用跳转及返回方法

ProgramNovice的博客 1259

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

ViewController 页面跳转 从一个Controller跳转到另一个Controller时,一般有以下2种:  1、利用UINavigationController,调用pushViewController,进行跳转;这种采用压栈和出栈的方式,进行Controller的管理。调用popViewControllerAnimated方法可以返回。  复制代码代码如下:

Keep_Moving31038的博客 2577

ios开发中viewcontroller之间的跳转

最近遇到这样一个问题,有A B  C三个viewcontroller,A跳转到B,B跳转到C,返回的时候希望直接从C跳回A,关闭B; 解决思路: 在这里我们不能使用push/pop,popViewControllerAnimated是逐个一层层后退的,如果在跳转到C的时候用popToRootViewControllerAnimated这个将A置顶,则从C后退的时候会报错; 所以,可以

JJMM2009的专栏 5567

iOS 获取当前正在显示的视图控制器ViewController(最全)

一、前言: 本来不怎么想写这篇文章的, 因为这种东西网上随便搜一大堆。但是还是发现项目中有些同学,没怎么理解好,直接照搬网上的,殊不知其本身虽处理了大部分情况,却仍有一些情况是漏掉的。所以就有了下面这篇文章。 二、场景: 在处理 URL Router 跳转的时候,经常需要得到“当前最上层的视图控制器”来进行视图跳转。 三、注意点: 网上比较多遗漏的场景是:A present B, B presen...

iOS开发 7034

iOS ViewController跳转界面的几种方法简单总结

1、模态跳转(Modal) 模态:一个普通的视图控制器一般只有模态跳转的功能,这个方法是所有视图控制器对象都可以用的。 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion 在官方文档中,建议这两者之间通过delegate实现交互。例如使用UIImagePickerController.

az44yao的专栏 1218

IOS ——UI篇——ViewController视图控制器

#import "ViewController.h" #import "SecondViewController.h"@interface ViewController () @end @implementation ViewController//-(instancetype)init//初始化//-(void)loadView//加载视图//视图加载完成 - (void)vi...

Maybe_2333的博客 205

ViewController页面跳转的方法

ViewController页面跳转的方法(一) func clickBtn(){ //跳转到第二个界面             self.secondCtrl = SecondViewController()     self.view.addSubview(self.secondCtrl!.view)          } func clickBtn

a736220388的博客 1146

ios ViewController 页面跳转

ios ViewController 页面跳转  从一个Controller跳转到另一个Controller时,一般有以下2种:  1、利用UINavigationController,调用pushViewController,进行跳转;这种采用压栈和出栈的方式,进行Controller的管理。调用popViewControllerAnimated方法可以返回。      Pic

dumuzhou2010的专栏 914

iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法

标签: 一、最普通的视图控制器UIViewContoller   一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有两种方法。   1、通过方法 - (void)presentViewController:(UIViewController *)viewControllerToPre

春风得意,马蹄仍急;少年豪情,一笑难回。 1249

iOS开发-ViewController中View的生命周期和如何替换ViewController中默认的View

1、替换ViewController中默认的View - (void)loadView{ //不要调 super self.view = [[CustomView alloc] init]; } 2、单个ViewController的生命周期(ARC环境) initWithCoder:(NSCoder *)aDecoder:(storyboard/xib) loadView:加...

Pandakingli的博客 1547
上一篇: iOS开发笔记之NSFileManager的使用
下一篇: iOS开发笔记-升级Xcode7后Pod无法使用问题
perfeter
博客等级 码龄13年 0粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值