Как открыть UIView в полноэкранном режиме с помощью вкладки? - PullRequest
2 голосов
/ 20 декабря 2010


это моя проблема.

  1. У меня есть приложение tabBar.
  2. В первой вкладке у меня есть таблица.
  3. При нажатии на таблицу показывается модальный вид.
  4. Чтобы вернуться от модального вида к первому вид, я использую
[self presentModalViewController:nw animated:YES];

Проблема в том, что, если я нажимаю на панель вкладок, когда открывается модальное представление, открывается второе представление, но таблица первого представления не работает, поскольку модальное представление все еще открыто, хотя оно выглядит как закрытое.

Это способ открыть модальное представление в полноэкранном режиме на панели вкладок?
Или также проверить, закрыт модальный вид или нет из другого вида?


EDIT: Я пытался со всем этим кодом:

 nw = [[NewsViewController alloc] initWithNibName:@"NewsViewController" bundle:nil];
 nw.modalInPopover = YES;
 nw.wantsFullScreenLayout = YES;
 nw.hidesBottomBarWhenPushed = YES;
 nw.contentSizeForViewInPopover = CGSizeMake(320, 480);
 nw.modalPresentationStyle = UIModalPresentationFullScreen;
 nw.view.frame = [[UIScreen mainScreen] applicationFrame];
 [nw.view setNeedsLayout];

но ничего !!! Это не будет идти в полноэкранном режиме!

Любая идея, пожалуйста?

спасибо,
альберто

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

Если представление, которое вы представляете, является полноэкранным, это должно скрыть панель вкладок. Тем не менее, вам может потребоваться изменить размер представления программно, чтобы он соответствовал размеру UIWindow.

Вы должны быть в состоянии сделать что-то вроде ...

[nw setFrame:[[UIScreen mainScreen] applicationFrame]];
[nw setNeedsLayout];

... чтобы достичь этого. (Извините, я сейчас нахожусь на коробке с Windows, поэтому не могу подтвердить это. Надеюсь, кто-нибудь предоставит какие-либо настройки, если потребуется.)

Затем вы должны отклонить начальное модальное представление с помощью метода делегата в исходном классе. (См. Раздел «Увольнение контроллера модального представления» в Руководстве по программированию контроллера Apple для iOS .) Исходный класс затем избавится от модального представления.

0 голосов
/ 04 января 2011

Решено с помощью уведомления!

При смене вкладки я отправляю уведомление и закрываю модальный контроллер.

- (BOOL)tabBarController:(UITabBarController *)tbController shouldSelectViewController:(UIViewController *)viewController { 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"DataComplete" object:nil];
    return YES;
}

На мой взгляд, классы получают уведомление и отклоняют контроллер!

- (void)downloadDataComplete:(NSNotification *)notif {
    NSLog(@"Received Notification");

    [self dismissModalViewControllerAnimated:YES];
}

Теперь можно снова открыть модальный вид и изменить вкладку!
Это обходной путь, но работает!

альберто.

...