странное поведение ModalViewController - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть контроллер представления (AddCommentViewController), который может сохранять комментарии в автономном режиме и редактировать комментарии при сохранении в автономном режиме.

Когда я загружаю AddCommentViewController в представлении, в котором я хочу добавить новый комментарий и сохранить его в автономном режиме,нет проблем:

AddCommentViewController *addView = [AddCommentViewController new];

[addView setTitle:@"New Comment"];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addView];
[navController setModalPresentationStyle:UIModalPresentationFormSheet];

[delegate.navigationController presentModalViewController:navController animated:YES];
[delegate dismissPopOver:self animated:YES];
[navController release];
[addView release];

Нет проблем, вид хорошо анимирован снизу.И когда уволен, он оживляется хорошо до дна.

Но теперь проблема.

В другом представлении я вижу список всех комментариев, сохраненных в автономном режиме.когда я загружаю AddCommentViewController, здесь происходит что-то странное.

Когда я пытаюсь представить модальное представление, оно анимируется слева, останавливается в странном месте (не по центру, а справа-снизу).и когда я отклоняю его, вид анимируется назад на левую сторону, а другой вид ориентирован на портрет.Кажется, я не могу найти проблему, и код почти идентичен:

Comment *comment = [allComments objectAtIndex:indexPath.row];

AddCommentViewController *addView = [[AddCommentViewController alloc] initWithId:comment.identifier];

[addView setTitle:@"Change comment"];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addView];
[navController setModalPresentationStyle:UIModalPresentationFormSheet];
navController.navigationBar.tintColor = [UIColor P4aPurple];

[self presentModalViewController:navController animated:YES];

[navController release];
[addView release];

Я попытался заставить представление в определенной ориентации с помощью:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}

, но я получаю этоошибка:

The view controller <UISplitViewController: 0x1843d0> returned NO from -shouldAutorotateToInterfaceOrientation: for all interface orientations. It should support at least one orientation.

Если я держу устройство в портретном режиме при загрузке в автономном режиме, рекомендую его правильную работу.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2011

ИСПРАВЛЕНО получается, что представление должно быть представлено модально в контроллере разделенного представления, а не в контроллере подробного представления разделенного просмотра.

0 голосов
/ 16 сентября 2011

Если вы хотите включить книжную ориентацию, попробуйте следующее:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
    if (toInterfaceOrientation == UIInterfaceOrientationPortrait)
        return YES;
    else return NO;
}
...