获取当前的 viewController

- (UIViewController *)currentController {
    UIViewController *result = nil;
    UIWindow *window = [[UIApplication sharedApplication] keyWindow];
    
    if (window.windowLevel != UIWindowLevelNormal) {
        NSArray *windows = [[UIApplication sharedApplication] windows];
        
        for (UIWindow *temWin in windows) {
            if (temWin.windowLevel == UIWindowLevelNormal) {
                window = temWin;
                break;
            }
        }
    }
    
    UIView *frontView = [[window subviews] objectAtIndex:0];
    id nestResponder = [frontView nextResponder];
    if ([nestResponder isKindOfClass:[UIViewController class]]) {
        result = nestResponder;
    } else {
        result = window.rootViewController;
    }
    return result;
}

时间: 2024-12-15 22:26:41

获取当前的 viewController的相关文章

Swift 获取view所在的ViewController

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #1e9421; background-color: #ffffff } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #c42275; background-color: #ffffff } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; fo

根据View获取该控制器

//根据View获取控制器 - (UIViewController*)viewController { for (UIView* next = [self superview]; next; next = next.superview) { UIResponder* nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { return (UIViewCo

[非凡程序员]XibView tableViewXib

//Xibs就是布局界面的一种方式. //创建xib的方法:选择New->File->UserInterface->Empty     设置将要创建Xib的文件名字, //============ 第一种:   首先,关于Xib加载    这里以"XibLoadView"为例==========// //--------------进入XibLoadView.xib文件----------- //创建好Xib文件后,我们看到Xib中没有任何页面,拖进一个View控件,

OObjevtive-c 关于UI Xibs布局界面

----------------------------------------------------- ViewController.h文件 #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIView *viewOne; @property (weak, nonatomic) IBOutlet UILabel *lable;

添加索引(IOS开发)

索引是用来辅助查询. 原则: - 索引标题不能与显示的标题完全一样: - 索引应该具有一定的代表性,能够代表一个数据集合: - 如果采用了索引列表视图,一般情况下就不再使用扩展视图.(容易点到) 会重新到的数据源方法: tableView: numberOfRowsInSection: ------获取某节的行数 tableView:cellForRowAtIndexPath: -------Cell数据的实现 numberofSectionInTableView: ----------获取节数

iOS Method Swizzling和分类的妙用AppDelegate轻量化处理

http://www.cocoachina.com/ios/20151117/14167.html 简介 在iOS工程中,AppDelegate往往会有上千行,甚至几千行,这样就会给维护AppDelegate带来诸多麻烦.比方说,老板想在出现HomeViewController之前弹出广告并停顿几秒,这样你就要加入插入广告的逻辑:又比方说,老板想在开始做个请求,判断某个开关是否打开.这样就会在AppDelegate中插入很多相关的不相关的代码. 在AppDelegate中,- (BOOL)app

UINavigationController页面切换合基本设置 &nbsp;

新建的类和文件名 AppDelegate.h #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end AppDelegate.m #import "AppDelegate.h" #import "FirstViewController.

Swift 反射机制,命名空间

1. 知道 Swift 中有命名空间        - 在同一命名空间下,全局共享!        - 第三方框架使用 Swift 如果直接拖拽到项目中,从属同一个命名空间,很有可能冲突!        - 以后尽量使用 cocoapod     2. 重点是要知道 Swift 中 NSClassFromString(发射机制)的写法        - 发射最重要的目的是解耦        - 提示:第一印象会发现一个简单的功能,写的很复杂.但是封装的好,弹性很大! 在程序中,当需要使用Stri

Objective-C 反射机制

该文章属于<简书 — 刘小壮>原创,特此感谢:<简书 — 刘小壮> http://www.jianshu.com/p/5bbde2480680 了解反射机制 Objective-C语言中的OC对象,都继承自NSObject类.这个类为我们提供了一些基础的方法和协议,我们可以直接调用从这个类继承过来方法.当然,本篇文章中讲到的反射方法,就在NSObject和Foundation框架中. 反射机制涉及到的东西比较多,这篇文章只从OC层面来讲反射机制,不涉及runtime部分,以后会写文