navigationController 不会返回到 rootViewController
Posted
技术标签:
【中文标题】navigationController 不会返回到 rootViewController【英文标题】:navigationController won't return to rootViewController 【发布时间】:2015-05-28 11:18:50 【问题描述】:我已将第三方库导入到我的项目中。在我的 AppDelegate 中,我创建了一个 navigationController 并将 rootViewController 设置为我现有的项目主视图。然后我引用库 ViewController 并将其呈现在导航堆栈上(我认为)。它会显示,但是当我尝试关闭并返回到我的原始项目视图时它不起作用。我的代码:
AppDelegate.m
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
appbarViewController = [[AppBarViewController alloc] init];
self.navigation = [[UINavigationController alloc]initWithRootViewController:appbarViewController];
self.window.rootViewController = self.navigation;
[self.navigation setNavigationBarHidden:NO];
[self.window addSubview:self.navigation.view];
[self.window makeKeyAndVisible];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
return YES;
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
if([[url host] isEqualToString:@"session"])
if([[url path] isEqualToString:@"/login"])
ACSViewController *acs = [[ACSViewController alloc] init];
[self.window.rootViewController presentViewController:acs animated:NO completion:nil];
return YES;
ACSViewController 不是库的一部分,我创建并从库类中调用。
libraryViewController.m
-(void)backButtonPressed
[self dismissViewControllerAnimated:YES completion:nil];
任何想法为什么视图不会关闭?它会以动画方式消失,但随后会以相同的当前视图返回。
【问题讨论】:
你是push视图还是使用presentViewController? 显示presentViewcontroller的编码。 现在,对不起,我在同一行。我现在已经移动了它,所以可以看到我是如何呈现视图的 就在上面的代码中,这一行[self.window.rootViewController presentViewController:acs animated:NO completion:nil]; 严重的是没有选项。因为您直接从openURL编写编码。首先您需要仅从RootViewController而不是在appDelegate.M中转到另一个视图 【参考方案1】:你是 dismissing
viewcontroller
有 not
是 presented
所以动画发生但返回相同的视图。
在这里,您正在展示 ACSViewController
并关闭 libraryViewController
。
解决方法是先移除 libraryViewController 的视图,然后关闭 ACSViewController。下面的代码行应该在ACSViewController
中以将其关闭。
[self dismissViewControllerAnimated:YES completion:nil];
【讨论】:
不幸的是,我无法将我的项目头文件导入到库中。但我可以添加到图书馆。 [[NSNotificationCenter defaultCenter] addObserver: 是否适合这种做法?以上是关于navigationController 不会返回到 rootViewController的主要内容,如果未能解决你的问题,请参考以下文章
NavigationController 不会从函数调用 + swift 推送
Tab Bar 子 viewWillAppear 不会触发,添加 NavigationController 会给出两个导航栏
从 NavigationController 后退按钮返回多个 ViewController
iOS 开发:为啥 self.navigationController.navigationBar.frame.size.height 返回零?