如何解雇segue ios8

时间:2015-05-08 12:16:18

标签: objective-c ios8 uistoryboardsegue

我对segue不太熟悉。我第一次使用它。

[self performSegueWithIdentifier:@"LoginSegue" sender:nil];

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    id destinationViewController = segue.destinationViewController;

    if ([destinationViewController isKindOfClass:[MFSideMenuContainerViewController class]])
    {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:Main bundle:[NSBundle mainBundle]];

        UINavigationController *navigationController = [storyboard instantiateViewControllerWithIdentifier:NavigationController];
        MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)destinationViewController;
        UIViewController *leftSideMenuViewController = [storyboard instantiateViewControllerWithIdentifier:LeftSideMenuIdentifier];

        [container setLeftMenuViewController:leftSideMenuViewController];
        [container setCenterViewController:navigationController];
    }
}

我的问题是在我尝试使用以下方法在SideMenu的LOGOUT按钮上解除它时,

 [self dismissViewControllerAnimated:YES completion:nil];

什么都没发生。不知道如何解雇它。 任何人都可以为此解决问题吗? 提前谢谢!

2 个答案:

答案 0 :(得分:1)

根据documentation dismissViewControllerAnimated

  

解散由模态呈现的视图控制器   接收机。

因此,这适用于模态呈现的控制器,对于导航堆栈,请改用unwind segues

答案 1 :(得分:1)

[self dismissViewControllerAnimated:YES completion:nil];

当视图控制器出现时,上面的语句会关闭视图控制器。

如果您使用“PUSH”或“SHOW”,那么您的视图控制器将推送到导航堆栈。那么在这种情况下你必须从导航堆栈POP视图控制器。

尝试以下代码

[self.navigationController popViewController:yourViewController animated:YES];