我正在尝试编写iPad应用程序。
对于 masterView 和 detailView (我手工制作的splitView),我有UIViewController
作为 parentViewController (全屏)。另外,我有一个单独的视图(例如 moreDetailView )与class和xib,我想将其显示为模态。
masterView 有UITableView
, detailView 有UICollectionView
。他们都有自己的类和xib。在 detailView 中有几个项目。
在 detailView 的 didSelectItemAtIndexPath:中,我想显示 moreDetailView 。
那么,我该怎么做?以及如何在 parentViewController 中显示它,但在 detailView 中显示 NOT 。
希望我的问题是可以理解的。
答案 0 :(得分:0)
您正在初始化masterview
中的detailview
和parentview
。要访问parentcontroller
,您可以在detailcontroller
中声明属性
UIViewController *parent;
在初始化时你可以做到
detailController.parent=self;
并且在显示模态时可以执行
[parent presentModal]; //instead of [self presentModal];
我希望以上对您有用,但您需要更正语法。
答案 1 :(得分:0)
下面的代码将在您的splitView顶部的模态表单中显示您的控制器(您可以使用setModalPresentationStyle进行更改)。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *moreDetailViewController = [[MoreDetailViewController alloc] init];
[moreDetailViewController setModalPresentationStyle:UIModalPresentationFormSheet]; //or style depending on what you want
[moreDetailViewController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:moreDetailViewController animated:YES completion:^{
//stuff you want to do after the viewController has been presented
}]; }
答案 2 :(得分:0)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *moreDetailViewController = [[MoreDetailViewController alloc] init];
[moreDetailViewController setModalPresentationStyle:UIModalPresentationFormSheet]; //or style depending on what you want
[moreDetailViewController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:moreDetailViewController animated:YES completion:^{
//stuff you want to do after the viewController has been presented
}];
}