您的位置:首页 > 移动开发

Appdelegate 跳转其他页面 获取当前屏幕显示的viewcontroller 获取当前屏幕中present出来的viewcontroller 获取当前导航控制器

2018-01-17 17:40 821 查看
Appdelegate 跳转其他页面

UITabBarController *tab = (UITabBarController *)_window.rootViewController;

UINavigationController *nav = tab.viewControllers[tab.selectedIndex];

MessageViewController *vc = [[MessageViewController alloc] init]; 需要跳转的页面

vc.hidesBottomBarWhenPushed = YES;

[nav pushViewController:vc animated:YES];

//获取当前屏幕显示的viewcontroller

- (UIViewController *)getCurrentVC{

UIWindow *window = [[UIApplication sharedApplication].windows firstObject];

if (!window) {

return nil;

}

UIView *tempView;

for (UIView *subview in window.subviews) {

if ([[subview.classForCoder description] isEqualToString:@"UILayoutContainerView"]) {

tempView = subview;

break;

}

}

if (!tempView) {

tempView = [window.subviews lastObject];

}

id nextResponder = [tempView nextResponder];

while (![nextResponder isKindOfClass:[UIViewController class]] || [nextResponder isKindOfClass:[UINavigationController class]] || [nextResponder isKindOfClass:[UITabBarController class]]) {

tempView = [tempView.subviews firstObject];

if (!tempView) {

return nil;

}

nextResponder = [tempView nextResponder];

}

return (UIViewController *)nextResponder;

}

//获取当前屏幕中present出来的viewcontroller。

- (UIViewController *)getPresentedViewController

{

UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;

UIViewController *topVC = appRootVC;

if (topVC.presentedViewController) {

topVC = topVC.presentedViewController;

}

return topVC;

}

// 获取当前导航控制器

- (BaseNavigationController *)getNavController{

BaseTableBarControllerView *tabVC = (BaseTableBarControllerView *)self.window.rootViewController;

tabVC.selectedIndex = 2;

BaseNavigationController *pushClassStance = (BaseNavigationController *)tabVC.selectedViewController;

return pushClassStance;

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