Добавление пользовательской кнопки «Назад» на навигационную панель - PullRequest
0 голосов
/ 16 июня 2011

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

UIButton *backButton = [UIButton buttonWithType:101];
[backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
[backButton setTitle:@"Back" forState:UIControlStateNormal];

UIBarButtonItem* newBackButton = [[UIBarButtonItem alloc] initWithCustomView:backButton];
graphSecondViewCtrl.navigationItem.leftBarButtonItem = newBackButton;

Ответы [ 2 ]

0 голосов
/ 16 июня 2011

Тип кнопки 101 не определен в SDK и может перестать работать при любом обновлении ОС.

Я бы использовал buttonWithType:UIButtonTypeCustom, а затем добавил изображение, которое придало бы вам нужный вид, вызвав setImage: forState для объекта пользовательской кнопки.

UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:[UIImage imageNamed:@"backBarButtonNormal.png"] forState:UIControlStateNormal];
[backButton setImage:[UIImage imageNamed:@"backBarButtonHighlighted.png"] forState:UIControlStateHighlighted];

// Rest of the code is the same.

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

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

- (void)viewDidLoad {
    [super viewDidLoad];
    [[self navigationController] setDelegate:self];
}

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

    if (viewController != self)
        NSLog(@"We're going away...");
}

- (void)viewDidUnload {
    [super viewDidUnload];
    [[self navigationController] setDelegate:nil];
}
0 голосов
/ 16 июня 2011

Тип кнопки 101 недокументирован.Это не то, что Apple согласилась поддерживать, поэтому она может измениться в любое время.Неверно полагаться на такие вещи.Вы должны рассмотреть кнопку custom с изображениями, чтобы быть уверенным, что она не сломается, как сейчас.

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