您的位置:首页 > 产品设计 > UI/UE

取得viewController展示view

2015-08-03 08:50 387 查看
非视图类中想要随时展示一个view时,可以直接声明一个view,然后只需要将被展示的view加到当前view的子视图,或者想把一个view随时加到一个viewcontroller时,这样就需要获得当前屏幕的这个viewcontroller了,这个方法在网上找到了,自己用了的确可以用

//获取当前屏幕显示的viewcontroller
- (UIViewController *)getCurrentVC
{
UIViewController *result = nil;

UIWindow * window = [[UIApplication sharedApplication] keyWindow];
if (window.windowLevel != UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows)
{
if (tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}

UIView *frontView = [[window subviews] objectAtIndex:0];
id nextResponder = [frontView nextResponder];

if ([nextResponder isKindOfClass:[UIViewController class]])
result = nextResponder;
else
result = window.rootViewController;

return result;
}
然后在想使用的地方,直接就可以调用这个函数,然后加上了,比如说现在声明的那个view里面写了这个,当想加上去的时候可以直接这样

[[self getCurrentVC].view addSubview:self]


- (UIViewController *)viewController {

//UIView  UIViewController  UIWindow
//(1)取得当前对象的下一个响应者
UIResponder *next = self.nextResponder;

while (next != nil) {
if ([next isKindOfClass:[UIViewController class]]) {
return (UIViewController *)next;
}

next = next.nextResponder;
}

return nil;
}

//获取当前屏幕显示的viewcontroller
- (UIViewController *)getCurrentVC
{
UIViewController *result = nil;

UIWindow * window = [[UIApplication sharedApplication] keyWindow];
if (window.windowLevel != UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows)
{
if (tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}

UIView *frontView = [[window subviews] objectAtIndex:0];
id nextResponder = [frontView nextResponder];

if ([nextResponder isKindOfClass:[UIViewController class]])
result = nextResponder;
else
result = window.rootViewController;

return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息