dismissViewController清除屏幕但不解散

时间:2015-03-25 13:44:00

标签: ios objective-c

我有两个屏幕:

第一个使用以下代码调用第二个代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:kDetailSegue]) {
        [NSThread detachNewThreadSelector:@selector(loadingThread) toTarget:self withObject:nil];
        TagDetailControllerViewController* detailController = segue.destinationViewController;
        detailController.location = self.recentLocation;
    }
}

kDetailSegue是现在的模态 - 演示文稿默认 - 转换:默认

在第二个ViewController中,我试图关闭屏幕:

[self.navigationController dismissViewControllerAnimated:YES completion:nil];

2 个答案:

答案 0 :(得分:0)

试试这个

[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:NULL];

答案 1 :(得分:0)

目前尚不清楚你想在第二个视图控制器中解雇什么,所以我将尝试介绍最可能的场景:

  • 如果要关闭以模态方式显示的视图控制器(TagDetailControllerViewController),则需要以模态方式关闭它。

    这可以通过调用TagDetailControllerViewController本身来实现:

    [self dismissViewControllerAnimated:YES completion:nil];
    

    根据Apple's documentation

    ,这是有效的
      

    如果您在呈现的视图控制器本身上调用此方法,它会自动将消息转发给呈现视图控制器。

    此外,如果您想直接从用于呈现它的视图控制器中删除它,您可以按如下方式执行:

    [self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
    
  • 最后,如果你想要的是解雇你在UINavigationController中推送的视图,那么你可以从堆栈中弹出它:

    [self.navigationController popViewControllerAnimated:YES];
    

正如您所看到的,视图被解散的方式实际上取决于它的呈现方式