У меня есть два диспетчера viewControllers, которым нужна кнопка входа в верхний правый угол панели навигации.Не могу добраться до пользовательского праваBarButtonItem
В viewController1 # viewDidLoad, я создал rightBarButtonItem
как так (сокращенно):
// set up the login button on the right
UIButton *loginButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *loginImage = [UIImage imageNamed:@"btn_login.png"];
[loginButton setBackgroundImage:loginImage forState:UIControlStateNormal];
[loginButton setFrame:CGRectMake(0, 0, loginImage.size.width, loginImage.size.height)];
[loginButton setTag:1111111];
UIBarButtonItem *loginItem = [[UIBarButtonItem alloc] initWithCustomView:loginButton];
self.navigationItem.rightBarButtonItem = loginItem;
[loginItem release];
пометить его так, чтобы в viewWillAppear
, я могу использовать viewWithTag:1111111
, чтобы выяснить, если это нужно скрыть или видимым , в зависимости от того, зарегистрирован ли пользователь. Простой.
((UIButton *)[self.navigationController.view viewWithTag:LOGIN_BUTTON_TAG]).hidden = true;
Когда viewController2 получает в стек, я в основном запустить тот же код, чтобы настроить мой rightBarButtonItem
, но я даю ему другой тег (то есть 222222).
In viewController2 # viewWillAppear, когда я ищу viewWithTag:222222
, он возвращается как null, и поэтому я не могу скрыть/показать его.
Я заметил, что если я использую тот же тег, что и в viewController1 (1111111), я могу добраться до него.
Почему это? Мои теги фактически настроены в верхней части файла как константы, поэтому кажется, что нецелесообразно копировать случайное число из vc1 в vc2, чтобы я мог заставить это работать. Вместо этого я хотел бы понять, почему тег vc2 не применяется к rightBarButtonItem
, и почему тег vc1 все еще сохраняется, хотя я в другом viewController.
Мое первое предположение заключается в том, что вы добавили лишние или меньшие цифры в тег, когда вы назначаете «тег», и когда вы получаете представление из 'tag' – tipycalFlow
Мое второе предположение (серьезное) заключается в том, что 222222 вызывает некоторое переполнение целого числа и превращает его в -123648 или что-то в этом роде. Попробуйте меньший тег, такой как 2222 – tipycalFlow
Мои теги на самом деле 34590 для vc1 и 234355 для vc2. Я просто использовал 1111111 и 222222, чтобы прояснить этот вопрос, на который был показан viewController. – djibouti33