OK, to jest dziwne. Tłukąłem się o to głową przez godzinę, próbując debugować.UIBarButtonItem z niestandardowym widokiem nie wyświetla się po pierwszym wyświetleniu
Utworzono UIBarButtonItem z niestandardowym widokiem, który jest UIButton z przypisanym obrazem. Kod jest następujący
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;
Znajduje się w moim sposobie - (id)initWithNibName:
na dłuższy UIViewController
na pierwszym wyglądem UIViewController, przycisk pojawia się jako normalne i działa dobrze. JEDNAKŻE, jeśli popchnę do innego kontrolera widoku, a następnie uderzę ponownie, przycisk jest NIEWIDZIALNY.
Nawet jeśli jest niewidoczny, przycisk nadal działa. Mogę go kliknąć i zachowuje się normalnie. Wiem, że jest to oryginalny UIButton, ponieważ zrobiłem ślady na jego adresie pamięci i innych właściwościach ... jego ukryta własność to FALSE, a jej właściwość alpha jest ustawiona na 1.00f
Myślałem na początku był to prawdopodobnie problem z głębiami, ale mam kod przesuwający moje niestandardowe tło UINavigationBar do tyłu w każdej pętli ramki i nic się nie zmienia. Zobacz Aktualizacja
To prawie jak obraz jest zwolnienie lub coś za kulisami, ale wskaźnik na który też jest w porządku ...
Zgaduję to jest trochę dziwne dziwactwo rysowania że wystarczy małpa z, ale jest to bardzo trudny problem dla Google.
Wszelkie wskazówki będą mile widziane.
UPDATE
Okazuje się, że jest to kwestia głębokości. Rysuję niestandardowe tło dla funkcji drawRect :, a kod ten PRZEKONUJE niestandardowe tło do tyłu stosu widoków, JEDNAKĄ ta metoda jest wywoływana tylko raz przez prywatne metody ramowe ... dlatego, gdy pasek jest przerysowywany po pierwszy widok, tło nie jest cofane i z jakiegoś głupiego powodu, postanawia przerysować przyciski za nim.
W tej chwili staram się dowiedzieć, w jaki sposób mogę wymusić wypychanie tła za każdym razem, gdy renderowany jest pasek UINavigationBar.
Lepiej jest dodać przyciski do paska nawigacji w 'viewDidLoad'. Wypróbuj to pierwsze. I spróbuj ustawić ten obraz do wszystkich stanów UIButton. – Nekto
Naprawdę cieszę się, że znalazłem to, przechodzę dokładnie to samo. Poniższe rozwiązania nie wydają mi się odpowiednie i bardziej przypominają hacki. Ale jeśli już to wymyśliłeś, bardzo chciałbym zobaczyć, co zrobiłeś. – n00shie