presentModalViewController не принимает полный экран - PullRequest
1 голос
/ 01 июня 2011

Пейзаж только приложение. На моем главном окне XIB у меня есть UIView. Я загружаю UIScrollview программно в этот UIView, который работает просто отлично. В этом просмотре прокрутки у меня есть кнопка, которая вызывает экран «детализации» (отдельный контроллер представления) через вызов presentModalViewController:

    LearnITViewController *learnit = [[LearnITViewController alloc] initWithNibName:@"LearnITViewController" bundle:nil];
self.learnitView = learnit;
[self presentModalViewController:learnit animated:YES];    
[learnit release];

Действие вызывается, но модальное представление не занимает весь экран, когда вид прокрутки является подпредставлением. Вместо этого он появляется в родительском прокручиваемом окне, переключает ориентацию и т. Д. Не желаемое поведение.

Любое руководство о том, как сделать модальный вид полноэкранным, когда вызов сделан из scrollview, который является подпредставлением контейнера UIView на главной xib?

Ответы [ 4 ]

1 голос
/ 01 июня 2011

Спасибо за все комментарии. Где-то нашла подсказку о переопределении presentModalViewController и пузырях в цикле, пока основной контроллер не достигнет (в моем случае, HomeViewController). Работал как чемпион.

- (void) presentModalViewController:(UIViewController *)screen animated:(BOOL)animated {
    UIResponder *responder = self;
    while (responder && ![responder isKindOfClass:[HomeViewController class]]) {
        responder = [responder nextResponder];
    }
    [(UIViewController *)responder presentModalViewController:screen animated:YES];
}

Я переопределяю в .m файле UIScrollview, который содержит кнопку, которая делает вызов.

0 голосов
/ 11 июня 2011
LearnITViewController *learnit = [[LearnITViewController alloc] initWithNibName:@"LearnITViewController" bundle:nil];
self.learnitView = learnit;
[self.learnitView setsetWantsFullScreenLayout:YES];

или

self.learnitView.wantsFullScreenLayout = YES;
[self presentModalViewController:learnit animated:YES];    
[learnit release];
0 голосов
/ 01 июня 2011

Вместо self добавить UIViewController в superview.

LearnITViewController *learnit = [[LearnITViewController alloc] initWithNibName:@"LearnITViewController" bundle:nil];
self.learnitView = learnit;
[self.view.superview presentModalViewController:learnit animated:YES];    
[learnit release];
0 голосов
/ 01 июня 2011

Попробуйте добавить subview вместо presentModelViewController как:

LearnITViewController *tempView = [[LearnITViewController alloc] initWithNibName:@"LearnITViewController" bundle:[NSBundle mainBundle]];
self.learnITViewController = tempView;
[tempView release];
[self.view addSubview:mainMenuView.view]; 

И добавить это тоже

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
// Return YES for supported orientations.
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);//or left
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...