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 立即下载

相关推荐

联想ThinkPad声卡驱动安装避坑指南:从E470到X1 Carbon的通用解法

本文详细介绍了ThinkPad声卡驱动安装的全流程,从硬件识别到驱动获取、安装技巧及深度排错。涵盖E470到X1 Carbon等不同机型的通用解法,帮助用户解决音频驱动问题,提升使用体验。重点讲解了声音驱动的精准识别和安装策略,确保系统稳定运行。

weixin_29207439的博客 708

详解iOS的presentViewController

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

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

Cobalt Strike4.0安装包(内附中文版)

1.什么是 Cobalt Strike Cobalt Strike 是一个为对手模拟和红队行动而设计的平台,主要用于执行有目标的攻击和模拟高级威胁 者的后渗透行动。 Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、W...

梦之序章的博客 2万+

正确使用PresentModalViewController

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

weixin_33966365的博客 2966

数据仓库建模的步骤-从需求分析到模型优化的全面指南

数据仓库建模是一个系统化的过程,旨在设计和构建一个高效、可扩展的数据存储和分析环境。它的目标是将来自不同源系统的数据整合到一个统一的、面向主题的、随时间变化的数据集合中,以支持企业的决策制定过程。数据仓库建模不仅仅是创建表格和定义关系,它更是一门艺术,需要平衡业务需求、技术限制和未来的可扩展性。提供快速的查询性能支持复杂的分析需求适应业务的变化和增长保持数据的一致性和准确性接下来,让我们深入探讨数据仓库建模的每个主要步骤。

一个8年大数据开发工程师的碎碎念 2100

对比学习损失函数避坑指南:为什么你的自监督模型不收敛?

本文深入剖析对比学习损失函数中的关键陷阱,揭示自监督模型不收敛的根本原因。通过分析温度系数选择、负样本采样策略和特征归一化等核心因素,提供实用解决方案。实验数据表明,正确设置温度系数τ(建议0.07起)可提升30%性能,而MoCo风格的负样本队列比SimCLR方案在小批量时准确率高6-8%。

nokia的博客 922

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

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

fanjiarong_919的博客 1738

两层板如何做阻抗控制呢

两层板如何做阻抗控制呢? 这个问题可能很多人都会碰到,有的人在此等需要做阻抗控制的情况都选择做多层板。诚然,多层板在阻抗控制,EMC等等方面都有着天然的优势。然而,在价格上和周期上,两层板就有着绝对优势了。 对于成本非常敏感而又不是太复杂的产品,尽管对于我们硬件工程师而言,有一堆的理由要求使用多层板。然而在面对毛都不懂的老板“别人能做,你为什么不能做?”这个问题时只得低下我们高傲的头颅。 好...

weixin_42005993的博客 2万+

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

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

IT全栈 华强工作室 3062

Ubuntu 22.04远程桌面终极指南:从零配置RDP到解决黑屏问题

本文提供了一份Ubuntu 22.04远程桌面配置的终极指南,详细讲解了如何从零开始安装和配置RDP服务,并重点解决了连接后常见的黑屏问题。通过分析会话冲突、修复启动脚本及配置权限策略,帮助用户实现稳定、高效的远程桌面连接,优化分辨率、禁用锁屏,打造无缝的远程工作体验。

sony5的博客 1382

1、JMP脚本编程全面指南:从基础到高级应用

本博客全面介绍了JMP脚本编程的各个方面,从JMP基础和JSL入门,到数据类型、数据结构、编程方法、数据表操作、图形与三维场景脚本,再到应用程序创建与扩展功能。内容涵盖脚本工具使用、常见任务实现、兼容性说明及未来发展趋势,旨在帮助用户掌握JMP脚本语言的强大功能,提升数据分析的自动化与定制化能力。适合从初学者到高级用户的深入学习与实践参考。

flink9streamer的博客 266

「iOS」push与present

iOS界面推出与弹出的总结

2301_80253909的博客 1797

AI原生应用评测:主流大语言模型性能对比

任务适配性:是否匹配应用的核心任务(如代码生成需强逻辑推理,内容创作需强创意性);上下文能力:处理长序列(如10万+字文档)的理解与生成能力;可靠性:幻觉(Hallucination)率、事实准确性、安全合规性;性价比:API调用成本、延迟、 scalability(扩展能力)。AI原生应用的核心是LLM与应用场景的深度协同。

架构师的AI之路,分享AI应用开发架构的学习与实践。 507

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

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

Ryan's zone 3万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

iOS视图控制器(ViewController)

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

Chujun123528的博客 900

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ViewController 的常用跳转及返回方法

ViewController 的常用跳转及返回方法

ProgramNovice的博客 1259

visio安装包

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

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、付费专栏及课程。

余额充值