我有两个屏幕:
第一个使用以下代码调用第二个代码:
- (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];
答案 0 :(得分:0)
试试这个
[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:NULL];
答案 1 :(得分:0)
目前尚不清楚你想在第二个视图控制器中解雇什么,所以我将尝试介绍最可能的场景:
如果要关闭以模态方式显示的视图控制器(TagDetailControllerViewController
),则需要以模态方式关闭它。
这可以通过调用TagDetailControllerViewController
本身来实现:
[self dismissViewControllerAnimated:YES completion:nil];
,这是有效的
如果您在呈现的视图控制器本身上调用此方法,它会自动将消息转发给呈现视图控制器。
此外,如果您想直接从用于呈现它的视图控制器中删除它,您可以按如下方式执行:
[self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
最后,如果你想要的是解雇你在UINavigationController
中推送的视图,那么你可以从堆栈中弹出它:
[self.navigationController popViewControllerAnimated:YES];
正如您所看到的,视图被解散的方式实际上取决于它的呈现方式。