如何关闭 segue ios8

How to dismiss segue ios8

我对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 中的注销按钮上关闭它时,

 [self dismissViewControllerAnimated:YES completion:nil];

什么都没发生。不知道如何拒绝它。 任何人都可以解决这个问题吗? 提前致谢!

根据 documentation dismissViewControllerAnimated

Dismisses the view controller that was presented modally by the receiver.

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

[self dismissViewControllerAnimated:YES completion:nil];

上面的语句在存在视图控制器时关闭视图控制器。

如果您正在使用 "PUSH" 或 "SHOW",那么您的视图控制器正在推送到导航堆栈。那么在那种情况下,您必须从导航堆栈中弹出该视图控制器。

试试下面的代码

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