iPad模态窗体查看不

Jon*_*Jon 2 cocoa-touch objective-c ipad ios

我正在使用此代码didSelectRowAtIndex.在我的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];
    }
}
Run Code Online (Sandbox Code Playgroud)

Fil*_*lic 5

您在错误的对象上设置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];
Run Code Online (Sandbox Code Playgroud)

你需要实现这个方法:

- (void)modalViewDone
{
    [self.navigationController dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)