UINavigationController не устанавливает свойства представления правильно при нажатии - PullRequest
0 голосов
/ 24 мая 2010

У меня есть UITabBarControllerDelegate, который выдвигает новый контроллер представления при нажатии определенной вкладки:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    MyView* myView = [[[MyView alloc] initWithNibName:@"MyView" bundle:nil]autorelease];
        if([self.tabBarController.selectedViewController.title isEqualToString:@"Friends"]){
        NSLog(@"Clicked Friends");
        myView.reloadFriends = TRUE;
        [self.navigationController myView animated:YES]; 
    }
}

Однако, если я изменю свой код, чтобы установить выбранный контроллер представления панели вкладок на myView, все будет работать, но я не получу свою навигационную панель:

if([self.tabBarController.selectedViewController.title isEqualToString:@"Friends"]){
        NSLog(@"Clicked Friends");
        myView.reloadFriends = TRUE;
        self.tabBarController.selectedViewController = myView; 
}

Как я могу установить свойство reloadFriends в MyView и иметь панель навигации вверху?

EDIT: Я также попробовал следующий код без удачи:

[self.tabBarController.selectedViewController.navigationController pushViewController:myView animated:YES];

Ответы [ 2 ]

0 голосов
/ 24 мая 2010

Решено:

if ([viewController isKindOfClass:[UINavigationController class]])
{
            [(UINavigationController *)viewController pushViewController:myView animated:NO];
}
0 голосов
/ 24 мая 2010

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

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