ОК, это странно. Я целый час била головой об это, пытаясь отладить.
Я создал UIBarButtonItem с настраиваемым представлением, которое представляет собой UIButton с назначенным ему изображением. Код выглядит следующим образом
UIButton *btnAdd = [[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 28, 28)] autorelease];
[btnAdd setImage:[UIImage imageNamed:@"btn_add"] forState:UIControlStateNormal];
[btnAdd addTarget:self
action:@selector(addBox)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithCustomView:btnAdd];
self.navigationItem.rightBarButtonItem = add;
Он находится в моем методе - (id)initWithNibName:
на расширенном UIViewController
При первом появлении UIViewController кнопка появляется как обычно и работает нормально. ОДНАКО, если я нажму на другой контроллер представления, а затем нажму назад, кнопка невидима.
Даже когда она невидима, кнопка все еще работает. Я могу нажать на него, и он ведет себя нормально. Я точно знаю, что это оригинальный UIButton, так как я провел трассировку по его адресу памяти и другим свойствам ... это скрытое свойство FALSE, а его альфа-свойство установлено в 1.00f
Сначала я подумал, что это, возможно, проблема глубины, но у меня есть код, толкающий мой пользовательский фон UINavigationBar сзади на каждом цикле кадра, и ничего не меняется. СМ. ОБНОВЛЕНИЕ
Это похоже на то, как изображение высвобождается или что-то за кадром, но указатель на это тоже хорошо ...
Я предполагаю, что это какая-то странная причуда к рисованию, с которой мне просто нужно обойтись, но это очень сложная проблема для Google.
Любые советы будут оценены.
UPDATE
Оказывается, это проблема глубины. Я рисую пользовательский фон на drawRect:, и этот код ДОЛЖЕН сдвинуть пользовательский фон в конец стека представления, ОДНАКО, этот метод вызывается только один раз методами закрытого каркаса ... поэтому, когда панель перерисовывается после при первом просмотре фон не возвращается назад, и по какой-то глупой причине он решает перерисовать кнопки позади него.
Итак, сейчас я пытаюсь выяснить, как заставить фон отодвигаться назад каждый раз при рендеринге UINavigationBar.