更新:
我又一次面对这个问题,找到了另一种方法。如果显示控制器没有嵌入到导航控制器中,则如果所呈现的控制器不是全屏并将变成黑色,则会隐藏它。方法setModalPresentationStyle:UIModalPresentationCurrentContext只能应用于导航控制器。因此,将呈现控制器嵌入到UINavigationController中,将UIModalPresentationCurrentContext设置为它并提供新的控制器--您将得到对话框控制器。
我介绍搜索控制器,它有推栈详细控制器的tableView。
详细的控制器可以用消息表示视图控制器,它由小UIView和半透明背景组成。
问题:当最后一个视图控制器出现时,其下的所有视图控制器都会被隐藏,而所呈现的搜索控制器就会变得可见。
我在这里做的是:
SearchViewController *viewController = [[SearchViewController alloc] initWithNibName:@"SearchViewController" bundle:nil];
viewController.data = dataArray;
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
[self.navigationController setModalPresentationStyle:UIModalPresentationCurrentContext];
[self.navigationController presentViewController:navigationController animated:YES completion:nil];比表格更详细的观点:
DetailViewController *viewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[viewController setHidesBottomBarWhenPushed:YES];
viewController.dataItem = [data objectAtIndex:(NSUInteger) [indexPath row]];
[self.navigationController pushViewController:viewController animated:YES];以及详细的视图显示消息框:
MessageController *controller = [[MessageController alloc] initWithNibName:@"MessageController" bundle:nil];
controller.message = message;
[self presentViewController:controller animated:YES completion:nil];当它被解散的时候,它下面的所有控制器都可以看到。
更新:
我所想要的只是提供一个具有uitableview的视图控制器。从此表中显示将能够显示消息框的详细视图。消息框必须是另一个视图控制器。当显示消息框时,前面的两个控制器都消失了。这就是问题所在。
发布于 2013-11-04 04:53:58
要达到这个目标,最简单的方法就是创建你想要的风投,然后一个接一个地呈现。不幸的是,这行不通。你得到的只是第一个风投,所有其他人都无路可走。UIKit就是不愿和你合作。
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.view.layer renderInContext:context];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();发布于 2015-06-30 17:46:54
在某些情况下,可以让每个模型显示的视图控制器呈现下一个视图控制器。
let window = UIApplication.sharedApplication().keyWindow!
if let modalVC = window.rootViewController?.presentedViewController {
modalVC.presentViewController(vc, animated: true, completion: nil)
} else {
window.rootViewController!.presentViewController(vc, animated: true, completion: nil)
}发布于 2014-05-09 13:47:03
取消显示视图控制器之上的所有视图控制器。
苹果的文档如下:
如果连续显示多个视图控制器,则生成一个呈现视图控制器的堆栈,在堆栈中较低的视图控制器上调用此方法将取消其直接子视图控制器和堆栈上该子视图控制器之上的所有视图控制器。当发生这种情况时,只有最顶层的视图才会以动画的方式被排除;任何中间视图控制器都会被简单地从堆栈中删除。最上面的视图使用其模式转换样式被取消,这可能与堆栈中其他视图控制器使用的样式不同。
解散两个模态视图控制器。
[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:NULL];https://stackoverflow.com/questions/19724166
复制相似问题