首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >呈现多模态视图控制器?

呈现多模态视图控制器?
EN

Stack Overflow用户
提问于 2013-11-01 09:37:39
回答 6查看 47.6K关注 0票数 21

更新:

我又一次面对这个问题,找到了另一种方法。如果显示控制器没有嵌入到导航控制器中,则如果所呈现的控制器不是全屏并将变成黑色,则会隐藏它。方法setModalPresentationStyle:UIModalPresentationCurrentContext只能应用于导航控制器。因此,将呈现控制器嵌入到UINavigationController中,将UIModalPresentationCurrentContext设置为它并提供新的控制器--您将得到对话框控制器。

我介绍搜索控制器,它有推栈详细控制器的tableView。

详细的控制器可以用消息表示视图控制器,它由小UIView和半透明背景组成。

问题:当最后一个视图控制器出现时,其下的所有视图控制器都会被隐藏,而所呈现的搜索控制器就会变得可见。

我在这里做的是:

代码语言:javascript
运行
复制
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];

比表格更详细的观点:

代码语言:javascript
运行
复制
DetailViewController *viewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[viewController setHidesBottomBarWhenPushed:YES];
viewController.dataItem = [data objectAtIndex:(NSUInteger) [indexPath row]];
[self.navigationController pushViewController:viewController animated:YES];

以及详细的视图显示消息框:

代码语言:javascript
运行
复制
MessageController *controller = [[MessageController alloc] initWithNibName:@"MessageController" bundle:nil];
controller.message = message;
[self presentViewController:controller animated:YES completion:nil];

当它被解散的时候,它下面的所有控制器都可以看到。

更新:

我所想要的只是提供一个具有uitableview的视图控制器。从此表中显示将能够显示消息框的详细视图。消息框必须是另一个视图控制器。当显示消息框时,前面的两个控制器都消失了。这就是问题所在。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-11-04 04:53:58

要达到这个目标,最简单的方法就是创建你想要的风投,然后一个接一个地呈现。不幸的是,这行不通。你得到的只是第一个风投,所有其他人都无路可走。UIKit就是不愿和你合作。

代码语言:javascript
运行
复制
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.view.layer renderInContext:context];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
票数 5
EN

Stack Overflow用户

发布于 2015-06-30 17:46:54

在某些情况下,可以让每个模型显示的视图控制器呈现下一个视图控制器。

代码语言:javascript
运行
复制
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)
}
票数 19
EN

Stack Overflow用户

发布于 2014-05-09 13:47:03

取消显示视图控制器之上的所有视图控制器。

苹果的文档如下:

如果连续显示多个视图控制器,则生成一个呈现视图控制器的堆栈,在堆栈中较低的视图控制器上调用此方法将取消其直接子视图控制器和堆栈上该子视图控制器之上的所有视图控制器。当发生这种情况时,只有最顶层的视图才会以动画的方式被排除;任何中间视图控制器都会被简单地从堆栈中删除。最上面的视图使用其模式转换样式被取消,这可能与堆栈中其他视图控制器使用的样式不同。

解散两个模态视图控制器。

代码语言:javascript
运行
复制
[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:NULL];

51

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19724166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档