Ios iPad模态窗体视图不可用

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

我正在DidSelectRowatinex中使用此代码。在我的iPhone上,它会推送一个视图,在iPad上,我希望它能在一个小弹出窗口中显示一个视图。出于某种原因,在我的iPad上,它是以模式显示的,但它仍然是全屏的,而不是一个小的模式弹出窗口。所以if语句是有效的,我使用类似的东西在别处展示了一个导航控制器,它工作得很好

有什么想法吗

- (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只是被推到导航堆栈上,所以后退按钮会自动出现。我已经用您需要的完整代码更新了我的答案,请看上面。