ios获取当前视图所在的viewController
2016-07-01 11:31
369 查看
有的时候,我们需要在某个view中获取到这个view所在的控制器,以便进行controller相关的操作,比如push到一个新的控制器,下面就介绍一下如何获取。
我们可以为UIView写一个分类,如下:
.h文件中:
#import <UIKit/UIKit.h>
@interface UIView (KFGetController)
//获取当前view所在的控制器
- (UIViewController *)viewController;
@end
.m文件中:
#import "UIView+KFGetController.h"
@implementation UIView (KFGetController)
- (UIViewController *)viewController
{
//获取当前view的superView对应的控制器
UIResponder *next = [selfnextResponder];
do {
if ([next
isKindOfClass:[UIViewController
class]]) {
return (UIViewController *)next;
}
next = [next nextResponder];
} while (next !=
nil);
return
nil;
}
@end
写完这个分类之后,就可以在需要获取控制器view中调用
UIViewController *controller = [self viewController]; 得到的这个controller就是当前view所在的控制器。
如果是在某个自定义view中,而这个view会被添加到某个viewController的view中,此时需要在这个自定义view的
- (void)willMoveToSuperview:(UIView *)newSuperview
在这个方法中调用[newSuperView viewController];就可以顺利拿到这个控制器了。
希望上面的介绍对你有帮助!
我们可以为UIView写一个分类,如下:
.h文件中:
#import <UIKit/UIKit.h>
@interface UIView (KFGetController)
//获取当前view所在的控制器
- (UIViewController *)viewController;
@end
.m文件中:
#import "UIView+KFGetController.h"
@implementation UIView (KFGetController)
- (UIViewController *)viewController
{
//获取当前view的superView对应的控制器
UIResponder *next = [selfnextResponder];
do {
if ([next
isKindOfClass:[UIViewController
class]]) {
return (UIViewController *)next;
}
next = [next nextResponder];
} while (next !=
nil);
return
nil;
}
@end
写完这个分类之后,就可以在需要获取控制器view中调用
UIViewController *controller = [self viewController]; 得到的这个controller就是当前view所在的控制器。
如果是在某个自定义view中,而这个view会被添加到某个viewController的view中,此时需要在这个自定义view的
- (void)willMoveToSuperview:(UIView *)newSuperview
在这个方法中调用[newSuperView viewController];就可以顺利拿到这个控制器了。
希望上面的介绍对你有帮助!
相关文章推荐
- iOS VoiceOver编程指南
- VoiceOver
- IOS中常用的设计模式
- IOS中正则表达式的使用
- h264解码异常处理(iOS)
- 推荐大家在GitHub 上值得关注学习的 iOS 开源项目
- 推荐大家在GitHub 上值得关注学习的 iOS 开源项目
- IOS 高德地图获取用户导航路径
- iOS开发学习路线和规划
- iOS 友盟分享 <小白集成>
- iOS-关于多线程
- iOS分类(category),类扩展(extension)—史上最全攻略
- 如何在Release版本应用中删除NSAssert()断言
- iOS保存密码之钥匙串操作以及UDID设备唯一标识符获取的替代方法
- ios 中使用xib拖拽的scrollview中子控件位置偏移
- iOS --TableView与NavigationBar中间多出空白间隔
- iOS--坐标变换Quartz 2D中的CGContextTranslateCTM、CGContextScaleCTM、
- iOS 生成.a静态库
- 2015-12-IOS 获取最新设备型号方法
- IOS 学习之路(一) 徒手写界面(2)自适应和懒加载