Ios iPad模态窗体视图不可用
我正在DidSelectRowatinex中使用此代码。在我的iPhone上,它会推送一个视图,在iPad上,我希望它能在一个小弹出窗口中显示一个视图。出于某种原因,在我的iPad上,它是以模式显示的,但它仍然是全屏的,而不是一个小的模式弹出窗口。所以if语句是有效的,我使用类似的东西在别处展示了一个导航控制器,它工作得很好 有什么想法吗Ios iPad模态窗体视图不可用,ios,objective-c,ipad,cocoa-touch,Ios,Objective C,Ipad,Cocoa Touch,我正在DidSelectRowatinex中使用此代码。在我的iPhone上,它会推送一个视图,在iPad上,我希望它能在一个小弹出窗口中显示一个视图。出于某种原因,在我的iPad上,它是以模式显示的,但它仍然是全屏的,而不是一个小的模式弹出窗口。所以if语句是有效的,我使用类似的东西在别处展示了一个导航控制器,它工作得很好 有什么想法吗 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (NSClassFromString(@"UISplitViewController") != nil && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
self.navigationController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
self.navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[self.navigationController presentModalViewController:detailViewController animated:YES];
[detailViewController release];
}
else
{
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
}
您在错误的对象上设置了modalTransitionStyle和modalPresentationStyle。您应该在detailViewController而不是self.navigationController上设置这两个选项 编辑:以下是完整的代码以及导航栏上的“完成”按钮,该按钮将关闭模式视图:
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
navController.modalPresentationStyle = UIModalPresentationFormSheet;
UIBarButtonItem *doneBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self
action:@selector(modalViewDone)];
detailViewController.navigationItem.rightBarButtonItem = doneBarButton;
detailViewController.navigationItem.title = @"Details";
[doneBarButton release];
[self.navigationController presentModalViewController:navController animated:YES];
[detailViewController release];
[navController release];
您需要实现此方法:
- (void)modalViewDone
{
[self.navigationController dismissModalViewControllerAnimated:YES];
}
谢谢,我这么做了,但是现在没有带导航按钮的导航栏来关闭它。添加此项的最佳方式是什么?我应该制作一个新的detailViewController xib吗?因为在iPhone上,detailview只是被推到导航堆栈上,所以后退按钮会自动出现。我已经用您需要的完整代码更新了我的答案,请看上面。