iOS 获取app当前页面的视图控制器

iOS中设置新的根视图控制器 1、背景描述: 登录界面为app 阅读详情

本文将采用两种方法来获取当前显示的视图控制器

第一种:实现UIView的扩展类,可以直接用view.viewController方法。

#import "UIView+UIViewController.h"

@implementation UIView (UIViewController)

- (UIViewController *)viewController{
 
    UIResponder *next = self.nextResponder;
    
    do {
        //代表取到了控制器对象
        if ([next isKindOfClass:[UIViewController class]]) {
            return (UIViewController *)next;
            break;
        }
        next = next.nextResponder;
    } while (next != nil);
    
    return nil;
}

@end

第二种:根据当前的视图控制器类型进行多种判断

//获取当前页面控制器
+ (UIViewController *)getCurrentViewController{
    UIWindow* window = [[[UIApplication sharedApplication] delegate] window];
    NSAssert(window, @"The window is empty");
    UIViewController *viewController = window.rootViewController;
    if ([viewController isKindOfClass:[UITabBarController class]]) {
        UITabBarController *tabBarController = (UITabBarController* )viewController;
        viewController = tabBarController.selectedViewController;
    }else if ([viewController isKindOfClass:[UINavigationController class]]){
        UINavigationController *navigationController = (UINavigationController* )viewController;
        viewController = navigationController.childViewControllers.lastObject;
    }else{
        NSUInteger childViewControllerCount = viewController.childViewControllers.count;
        if (childViewControllerCount > 0) {
            viewController = viewController.childViewControllers.lastObject;
        }
    }
    return viewController;
}

 

iOS开发:第一个iOS程序分析——AppDelegate.h文件视图View、视图控制器ViewController 在上一篇文章iOS开发:第一个iOS程序分析——代理,生命周期函数 阅读详情

相关推荐

iOS--项目最常见框架的搭建(标签栏控制器+导航栏控制器+视图控制器

打开市场上很多的app,可以发现其中的框架结构大同小异,其中最常见的莫过于标签栏控制器+导航栏控制器+视图控制器的框架结构,这类结构有很多种实现方式,纯代码和storyboard 都可以,这里介绍一种我经常使用的方式 一,首先我们需要在applegate中创建当前工程的主窗口,并且创建继承自UITabBarController的标签栏控制器 - (BOOL)application:(UIA

青春路上的小羔羊 1436

详解iOS 轻松获取当前控制器的正确方式

主要介绍了详解iOS 轻松获取当前控制器的正确方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

iOS 获取当前的ViewController的方法

本篇文章主要介绍了iOS 获取当前的ViewController的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

iOS--获取当前视图控制器

+ (id)getCuttentViewController {     UIViewController *vc = nil;     UIWindow *window = [UIApplication sharedApplication].windows.firstObject;     if ([window.rootViewController isKindOfClass:[UIN

w6524587的博客 1050

iOS获取当前视图控制器

视图控制器A present 到视图控制器B 之前,需要在B中拿到A,也就是拿到当前视图所在的视图控制器

Penny_Q的专栏 1280

OC获取当前的UIViewController或者RootViewController

OC获取当前的UIViewController或者RootViewController

weixin_46926959的博客 3331

iOS 获取当前页面控制器

    在开发过程中,我们经常需要获取当前 window, rootViewController, 以及当前 ViewController 的需求,来实现跳转或者其他业务需求. 如果 .m 实现不是在当前视图情况下, 或者在子视图中,我们需要快速的获取当前控制器,.     我们想要与控制器无耦合的情况下, 想要直接获取当前控制器, 基本都是通过 rootViewController 来查...

baidu_25743639的专栏 3266

iOS 获取当前界面所在的视图控制器

//获取当前所在的视图 + (UIViewController *)presentingVC{ UIWindow * window = [[UIApplication sharedApplication] keyWindow]; if (window.windowLevel != UIWindowLevelNormal){ NSArray *...

aibian19971110的博客 181

IOS----在其他视图控制器中转换根视图控制器

怎么在其他视图控制器中切换根视图控制器 例如在一个普通的视图控制器UIViewControler中切换根视图控制器 1、利用UIApplacation这个类获取当前应用程序 2、设置委托对象,注意这个委托对象应为Appdelegate的一个对象 3、然后利用委托对象设置根视图控制器 例:现在要在UIViewControler这个视图控制器中设置自己为根视图控制器 1、首先包

Mr.xiaoma.wen 607

IOS在其他视图控制器中转换根视图控制器

怎么在其他视图控制器中切换根视图控制器 例如在一个普通的视图控制器UIViewControler中切换根视图控制器 1、利用UIApplacation这个类获取当前应用程序 2、设置委托对象,注意这个委托对象应为Appdelegate的一个对象 3、然后利用委托对象设置根视图控制器 例:现在要在UIViewControler这个视图控制器中设置自己为根视图控制器  1、首先

klkxxy的博客 461

iOS 视图控制器转场详解

作者:seedante,神秘人士,他的 GitHub。 感谢投稿,原文链接。 前言 屏幕左边缘右滑返回,TabBar 滑动切换,你是否喜欢并十分依赖这两个操作,甚至觉得 App 不支持这类操作的话简直反人类?这两个操作在大屏时代极大提升了操作效率,其背后的技术便是今天的主题:视图控制器转换(View Controller Transition)。 视图控制器中的视图显示在屏幕上有两种方

u011344883的专栏 984

用InterfaceBuilder构造一个App视图控制器视图 、 控件与事件

StoryBoard iOS5之后Apple提供了一种全新的方式来制作UI,那就是StoryBoard。简单理解来说,可以把StoryBoard看做是一组viewController对应的xib,以及它们之间的转换方式的集合。在StoryBoard中不仅可以看到每个ViewController的布局样式,也可以明确地知道各个ViewController之间的转换关系。相对于单个的xib,其代码需求更少,也由于集合了各个xib,使得对于界面的理解和修改的速度也得到了更大提升。减少代码量就是减少bug量,这也是

iOS学堂 765

Hero:iOS视图控制器转场动画的革命性库

Hero:iOS视图控制器转场动画的革命性库 【免费下载链接】Hero HeroTransitions/Hero: 一个基于 Swift 的 iOS 视觉效果库,提供了各种视觉效果和动画,适合用于实现 iOS 应用程序的视觉效果和动画。 ...

gitblog_00062的博客 1150

ios 唤醒app返回根视图_ios – 如何弹回到根视图控制器,然后再推到不同的视图?...

我正在编写一个具有3个视图控制器的简单应用程序.根视图控制器是一个项目列表,基本表视图.关闭这个视图控制器,我推送两个不同的视图控制器基于一些用户交互 – 创建项目视图控制器视图项目视图控制器.所以,故事板看起来就像一个V,或者什么.在我的创建项目视图控制器上,当用户创建一个新项目时,我希望它回到根视图控制器,然后推送到视图项目控制器,以便我可以查看新创建的项目.我似乎无法让这个工作.很容易回到...

weixin_39834984的博客 208

ios 唤醒app返回根视图,更改iOS窗口的根视图控制器

Is the root view controller of a iOS Window usually initialized once in the beginning to a tab bar controller or navigation controller? Is it okay to change the root view controller multiple times wi...

weixin_39642687的博客 137

mjcript核心功能解析:获取APP路径、查找顶层控制器的终极技巧

**Cycript逆向工程神器** mjcript是一款基于Cycript实现的iOS逆向分析工具,专门为逆向工程师和开发者提供了一系列实用的函数库。通过mjcript,你可以轻松获取APP路径信息、查找顶层控制器、分析视图层级结构,大大提升iOS逆向分析效率。🚀 ## 为什么选择mjcript进行iOS逆向分析? 在iOS逆向工程中,获取应用的内部信息是至关重要的第一步。mjcript通过

gitblog_00686的博客 718
上一篇: iOS 将控件的任意角绘制为圆角
下一篇: iOS 吸取图片主色调
ios_sheep
博客等级 码龄12年 7粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值