【问题标题】:navigationController won't return to rootViewControllernavigationController 不会返回到 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中转到另一个视图

标签: ios objective-c xcode uinavigationcontroller cocoapods


【解决方案1】:

你是 dismissing viewcontrollernotpresented 所以动画发生但返回相同的视图。

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

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

[self dismissViewControllerAnimated:YES completion:nil];

【讨论】:

  • 不幸的是,我无法将我的项目头文件导入到库中。但我可以添加到图书馆。 [[NSNotificationCenter defaultCenter] addObserver: 是否适合这种做法?
猜你喜欢
  • 1970-01-01
  • 2018-05-09
  • 2017-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多