ios 中有没有获取当前 controller 的方法?

2015-05-14 14:53:06 +08:00
 tsinghan

ios 中有没有获取当前controller的方法?

5074 次点击
所在节点    iDev
11 条回复
yuan925
2015-05-14 15:25:51 +08:00
根据响应链模式,获取当前view的controller,可以用self.nextResponder获取
ycge234
2015-05-14 15:46:45 +08:00
github上有个ios-category,常用的方法都有,包括这个。
chmlai
2015-05-14 15:57:18 +08:00
什么叫当前 Controller?
tsinghan
2015-05-14 16:32:53 +08:00
@yuan925
@ycge234
@chmlai
额 我直接通过 self.window?.rootViewController?.childViewControllers.last 这样拿到当前的controller, 囧
superleexpert
2015-05-14 17:23:40 +08:00
可以设置个单例保存
knightlhs
2015-05-14 17:26:31 +08:00
当前 Controller 是个什么鬼?当前正在运行的 Controller 有一大堆……
话说你的意思是获取当前主线程的 Controller?当前显示的 View 的 Controller?
metrue
2015-05-15 09:57:31 +08:00
当前controller?主进程所处的controller?
yanchao7511461
2015-05-16 07:44:08 +08:00
lz肯定是说当前函数所在的controller,比如函数中有一个需求判断当前controller,我猜是这样的
xunfeng
2015-05-16 10:51:50 +08:00
弄个全局变量,再controller的viewDid appear 方法中,更新当前可见的viewcontrollers (具体可以通过发送通知,或者全局变量直接更新(感觉不是很优雅)),这个方法可以获得当前程序中所有在“可见”的controller。不过貌似对于pop window就无法跟踪,可以看看文档viewDidappear在啥时候不会被调用。
vincentxue
2015-05-16 14:01:04 +08:00
完全不明白楼主的意思,什么叫当前的 Controller,不是 self 吗,为什么要获取?
zhugeafanti
2015-05-22 14:18:12 +08:00
- (UIViewController *)viewController {
UIResponder *next = [self nextResponder];

do {
if ([next isKindOfClass:[UIViewController class]]) {
return (UIViewController *)next;
}

next = [next nextResponder];
} while (next != nil);

return nil;
}

自己用的一个view的category

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/191053

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX