Кнопка возврата Uinavigationitem не видна, пока я не нажму на левую сторону навигационной панели. бар - PullRequest
1 голос
/ 08 августа 2011

У меня есть 3 контроллера представления (VC) AB C. Сначала я представляю A. Затем я нажимаю B, а затем нажимаю C. После нажатия C я удаляю B из стека, чтобы пользователь мог вернуться к A, если он нажал Кнопка назад. Я использую этот код для нажатия C и удаления B:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Nazaj" style:UIBarButtonItemStylePlain target:nil action:nil]; 

    //we push C
    PorabaControllerR *anotherViewController = [[PorabaControllerR alloc] initWithNibName:@"PorabaViewR" bundle:nil];
    //[anotherViewController setTitle:@"Pregled porabe"];
    [anotherViewController.navigationItem setBackBarButtonItem:backButton];
    [self.navigationController pushViewController:anotherViewController animated:YES];
    [anotherViewController release];

    //we remove B from the stack
    NSMutableArray *allControllers = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];

    [allControllers removeObjectAtIndex:[allControllers count] - 2];
    //[allControllers objectAtIndex:[allControllers count] - 2]
    [self.navigationController setViewControllers:allControllers animated:NO];
    [allControllers release];

Проблема в том, что уинав. Кнопка возврата элемента не отображается на C, пока я не перехожу над ней и не нажимаю на нее. (на B все в порядке). Есть ли хороший способ, как отладить его или наблюдать за изменением названия кнопки во время выполнения? Любая другая идея?

РЕДАКТИРОВАТЬ: я пытался использовать идею Виджая:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Nazaj" style:UIBarButtonItemStylePlain target:self action:@selector(leftBarButtonClick:)];

-(IBAction)leftBarButtonClick:(UIButton *) sender {

NSLog(@"clicked left"); 
//back to home screen
[self.navigationController popToRootViewControllerAnimated:YES];

}

но эта функция вообще не вызывается, и кнопка "Назад" по-прежнему скрыта, пока я не перехожу на нее и не нажимаю на нее.

Ответы [ 2 ]

0 голосов
/ 08 августа 2011

Я решил это с помощью этого кода:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Nazaj" style:UIBarButtonItemStylePlain target:nil action:nil]; 

    PorabaControllerR *anotherViewController = [[PorabaControllerR alloc] initWithNibName:@"PorabaViewR" bundle:nil];
    [anotherViewController.navigationItem setBackBarButtonItem:backButton];

    NSMutableArray *allControllers = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];

    [allControllers removeObjectAtIndex:1]; //we remove B
    [allControllers insertObject:anotherViewController atIndex:1]; //we push C
    [self.navigationController setViewControllers:allControllers animated:YES];
    [allControllers release];
0 голосов
/ 08 августа 2011

просто используйте этот код в вашем действии backbarbutton или leftbarbutton.

внутри вашей функции

[self.navigationController popToRootViewControllerAnimated:YES];

OR

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
...