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 viewcontrollernotpresented 所以动画发生但返回相同的视图。

在这里,您正在展示 ACSViewController 并关闭 libraryViewController

解决方法是先移除 libraryViewController 的视图,然后关闭 ACSViewController。下面的代码行应该在ACSViewController 中以将其关闭。

[self dismissViewControllerAnimated:YES completion:nil];

【讨论】:

不幸的是,我无法将我的项目头文件导入到库中。但我可以添加到图书馆。 [[NSNotificationCenter defaultCenter] addObserver: 是否适合这种做法?

以上是关于navigationController 不会返回到 rootViewController的主要内容,如果未能解决你的问题,请参考以下文章

NavigationController 不会从函数调用 + swift 推送

Tab Bar 子 viewWillAppear 不会触发,添加 NavigationController 会给出两个导航栏

从 NavigationController 后退按钮返回多个 ViewController

navigationController 的返回按钮自定义

阻止用户返回 NavigationController

iOS 开发:为啥 self.navigationController.navigationBar.frame.size.height 返回零?