2013-10-07 2 views
0

При нажатии на панель вкладок, которая держит мой Кал календарь календарь исчезает:Кал календар Исчезает при нажатии Tab

enter image description here

Это мой код в viewWillAppear:

-(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    KalViewController *calendar = [[KalViewController alloc] init]; 
    [self.navigationController pushViewController:calendar animated:YES]; 
    calendar.dataSource = self; 
    calendar.delegate = self; 
    [calendar reloadData]; 
    self.tabBarController.delegate = self; 
} 

У меня также есть этот метод:

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    [self viewWillAppear:YES]; 
    //Even when I comment out this line the problem stays! 
} 

Если вам нужна дополнительная информация просто просить.

EDIT:

enter image description here

ответ

2

Вы используете контроллер бар вкладки неправильно. В самом деле, вы должны заполнить его своими контроллерами (либо в Interface Builder, либо путем установки свойства controllers контроллера панели табуляции) и позволить ему выполнять свою работу.

На другой монете обратите внимание, что viewWillAppear можно назвать несколько раз, поэтому это последнее место, где вы хотите выделить новый контроллер. Если вы переопределили viewWillAppear, чтобы ваш контроллер мог что-то показать, когда отображается его представление, это неправильный подход.

EDIT:

При создании пользовательского интерфейса программно, эти шаги, вы должны следовать в вас application:didFinishLaunching: для настройки RootViewController:

FirstViewController *fistVC = ... 
SecondViewController *secondVC = ... 
ThirdViewController *thirdVC = ... 

NSArray *viewControllers = [[NSArray alloc] initWithObjects:fistVC, secondVC, thirdVC, nil]; 

self.tabController = [[UITabBarController alloc] init]; 
[self.tabController setViewControllers:viewControllers animated:YES]; 

self.window.rootViewController = self.tabController; 

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

В любом случае, я надеюсь, что этот фрагмент кода разъясняет, как работает контроллер панели вкладок: вы создаете все его контроллеры, помещаете их в массив, передаете массив контроллеру панели вкладок. Нет необходимости создавать экземпляры контроллеров с вкладками (ни в viewWillAppear, ни в viewDidLoad) ...

+0

Так что я должен делать это в 'viewDidLoad'? –

+0

Когда появится представление, я хочу, чтобы Kal был на экране. –

+0

Кстати, это работает на iOS 6 –

Смежные вопросы