Удаление серой полосы над UINavigationController в UITableView - PullRequest
0 голосов
/ 01 июня 2011

Я создаю UITableView с помощью UINavigationController программно:

- (void) displayView:(int)intNewView{

    NSLog(@"%i", intNewView);
    [currentView.view removeFromSuperview];
    [currentView release];

    switch (intNewView) {
        ......

        case 5:
            vc = [[RootViewController alloc] init];
            currentView = [[UINavigationController alloc] initWithRootViewController:vc];
            [currentView setTitle:@"Events"];
            break;
    }

    [UIView beginAnimations:nil context:nil];

    [UIView setAnimationDuration:0.5];

    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
                           forView:self.view 
                             cache:YES];

    [self.view addSubview:currentView.view];

    [UIView commitAnimations];
}

Однако, когда появляется представление, появляется раздражающая серая полоса, расположенная над контроллером навигации, ни одно из моих других представлений не страдает от этого.Просто представление с помощью UITableView и NavigationController.

Есть идеи, что вызвало это и как его удалить?

Спасибо,

Джек

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

A UINavigationController предполагает наличие корневого представления в окне, поэтому оно включает строку состояния.Если он помещен в другое представление, которое содержит строку состояния, рисуется вторая пустая строка состояния, которая выглядит как «надоедливая серая полоса, расположенная над контроллером навигации».

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

Когда UINavigationController инициализируется, он делает это, ожидая, что строка состояния iPhone будет присутствовать в верхней части экрана.Поэтому вид, по существу, немного смещен, чтобы приспособиться к этому.НО, поскольку мой UINavigationController находится внутри моего RootViewController, UINavigationController не обязательно должен приспосабливаться к строке состояния, и поэтому его можно «переместить» на соответствующее расстояние, используя следующую строку, помещенную в метод viewDidLoad моего RootViewController:

self.navigationController.view.frame = CGRectMake(0, -20, 320, 480);

Теперь, когда программа запускается, в верхней части моего обзора нет серой полосы / серого пространства.

Спасибо за вашу помощь, указал мне правильное направление.

Jack

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...