Вы устанавливаете 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];
}