无法解除ViewController

时间:2017-03-04 22:09:56

标签: ios objective-c

我有CustomNavigationViewController我在哪里检查用户是否已注册。如果是,则直接打开UserProfileVewController,跳过注册或登录屏幕。

每当用户点击退出按钮时,我就会尝试解除UserProfileVewController,但没有任何反应。

CustomNavigationViewController.m

-(void) viewWillAppear: (BOOL) animated {
    if([self isRegistered])
    {
        UserProfileViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"UserProfileVewController"];
        [self pushViewController:vc animated:YES];
    }
}

UserProfileVewController.m

[self dismissViewControllerAnimated:YES completion:nil];

3 个答案:

答案 0 :(得分:0)

当你“推”一个ViewController时,你想“弹出”回到推动它的VC。

当你“呈现”一个ViewController时,那就是你想“解雇”它。

参考:https://developer.apple.com/reference/uikit/uinavigationcontroller/1621886-popviewcontrolleranimated?language=objc

答案 1 :(得分:0)

视图控制器导航以两种模式运行。 1.演示文稿(模态视图) 2.亲子关系(遏制)

  1. 演示文稿:要从第一个控制器移动到第二个控制器,我们使用

    [self presentViewController:secondController animated:YES completion:nil]

    现在,回到第一个控制器,在第二个控制器中它应该是

    [self.presentingViewController dismissViewController animated:YES]

  2. 亲子关系:NavigationController,TabBarController就是例子。 NavigationController充当控制器堆栈,其中包含TabBarController控制器阵列。

    由于您正在使用导航控制器并将控制器推入导航控制器,因此需要弹出而不是关闭。因此,在第二个视图(子视图控制器)中,它应该写为

    [self.navigationController popViewControllerAnimated:YES];

答案 2 :(得分:0)

如果按下viewcontroller,则无法忽略viewcontroller只返回控制器

[self.navigationController popToRootViewControllerAnimated:YES];

如果存在viewcontroller,你想要支持控制器

[self dismissViewControllerAnimated:YES completion:nil];