iPad Модальная форма просмотра нет - PullRequest
2 голосов
/ 05 августа 2011

Я использую этот код в 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];
    }
}

1 Ответ

5 голосов
/ 06 августа 2011

Вы устанавливаете 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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...