首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS学习——获取当前最顶层的ViewController

在iOS开发过程中,我们经常性会需要获取当前页面的ViewController,然后利用ViewController进行一些操作,例如在最顶层的ViewController上展示一个UIAlertController...,或者在最顶层的ViewController上present另一个ViewController,或者进行其他操作。...1 实现思路   通过最底层的ViewController依次向上寻找,直到找到最顶层的ViewController,也就是从UIApplication的keyWindow的rootViewController...在寻找的过程中,要分别考虑当前ViewController是UITabBarController和UINavigationController的情况,同时还要考虑到当前ViewController是否通过...[UIApplication sharedApplication].keyWindow.rootViewController获取到的是项目的根视图,结合可能用到UITabBarController或者UINavigationController

6.7K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Container ViewController自定义转场控制器。

    最爱UITabBarController+UINavgationController的CP组合好像失效的。难道只能用present来实现么。...打开viewController.m创建两个UIButton: @interface ViewController () @property (nonatomic, strong) UIButton *...这两个色块就代表前言中顶部的左右按钮,点击左边的色块会从左边弹出一个控制器,右边的同理。 ? 第二步,实现弹出控制器: 现在我们给左右按钮addTarget。...到这,大致的实现逻辑都已经讲明了。只是代码有点乱。如果要再项目中使用,第一个ViewController就相当于我们的主页,然后再主页里写这些逻辑就会把主页弄的很臃肿。...所以我们其实可可以相UITabbarController一样,写一个控制器,然后传入需要的UIViewController数组,就可以实现。这样使用起来也方便,维护也简单。

    71710

    iOS 自定义 ViewController 过渡动画

    就想着自己也来玩一下,顺便把之前没写成的 Custom ViewController Transition 自定义视图控制器过渡的文章也一起搞定了。...这里只以这个动画的实现为主线,更系统的介绍请移步上面的相关链接。 视图控制器过渡,就是指图片里那种 ViewController 的过渡效果。(好废话。。。)...view controller transitions 可交互过渡,例子就是在 NavigationController 的详细页面中从屏幕左侧滑入以返回时的那个动画。...有两个方法需要实现 // 这个方法负责做真正的动画,输入参数是过渡的上下文,从哪个VC过渡到哪个VC这些东西都可以从它得到。...然后给这个 ShapeLayer 的 path 属性加动画,从半径为0变化到覆盖整个目标 VC 。

    1.4K31

    大前端开发中的路由管理之四:iOS篇

    ,UITabBarController         其中,容器类ViewController是这篇文章关注的重点,因为他们管理着View的显示逻辑。         ...,而UITabBarController则不局限于此。         ...一张图概括NavigationController的结构 3.2 通用的页面切换方式         容器类的ViewController通过一个特定的结构来实现多层级管理,但并不是所有页面都能确保是在同一个容器中...这个参数就是询问你是否需要在页面切换的时候加入动画。默认的动画就是从右往左推出一个新的页面。...3.4 状态的保存和回溯         从源码中可以发现ViewController实现了一个叫做UIStateRestoring的协议,所以持有一个叫做restorationIdentifier的属性

    1.9K40

    Cocoa编程中视图控制器与视图类详解

    还为标准的系统行为进行响应。从语法上 说,UIViewController是视图控制器的父类。视图控制器类是没有可视化表示的抽象类,只有它管理的视图才提供可视画布。记住:1....通过调用initWithRootViewController:方法可以将特定控制器设置为根。...推入时,新的视图控制器从右方滑入屏幕(假定animated:YES)。向左指的Back后退按钮出现,可返回到上一步,且Back按钮用的是上一个视图控制器的标题。 2....;   提示:UIViewController 有一个属性是navigationController,如果当前ViewController在某个NavigationController的堆栈中 的话(即是被推送过来的...)和栏标题(title)、用于显示标题的视图(titleView),以及用于从当前视图向后导航的Back按钮(backBarButtonItem)和隐藏后退按钮(hidesBackButton)。

    5.1K50

    iPad Safari多窗口视图分析和实现思路

    这里我将以 Safari 为参考探讨它的实现思路。 Safari 是 iOS 系统自带的浏览器,支持打开多个网页窗口。...[iPhone Safari 的多窗口管理] 而在iPad 上,同样的按钮打开的视图是一个大纲视图,所有的网页窗口平铺展示,就像桌面平台的多窗口管理 [iPad 上 Safari 的多窗口管理] 我们再认真观察一下...我们常用的 UITabBarController、UINavigationController 都是这样的容器控制器(还有一个在 iPad 分屏展示会用到的 UISplitViewController)...具体来说,从某个具体页面切换到大纲视图之前,对页面做一个截图,ScrollView 中也不再加载具体的 ViewController 的 view 而是仅放置静态截图。...当从大纲视图回到具体页面,同样可以通过操作 zoomScale和 contentOffset 来使得截图铺满视口,完成后再操作实际 ViewController 的 view 带到视图顶层,再把截图卸载

    4.1K30
    领券