Lubię tworzyć moje widoki jako samodzielne pliki Xib, a następnie utworzyć je i dodać jako subviews.Automatyczny układ z UINavigationBar i UIBarButtonItem
Tak, podczas pracy z UINavigationBar
, spodziewałem się być w stanie zrobić to samo, tworząc najpierw mój własny pogląd - od XIb - następnie dodanie go jako niestandardowego celu UIBarButtonItem
:
UIBarButtonItem *anItem = [[UIBarButtonItem alloc] initWithCustomView:_myCustomView];
Następnie dodanie do paska nawigacji:
self.navigationBar.topItem.rightBarButtonItems = @[ anItem, anotherItem ];
Jak dotąd tak dobrze.
Teraz, _myCustomView
używa Auto Layout (AL) i myślałem, że to nie będzie problem. Nie w tym przypadku. Próbowałem prawie wszystkiego. Nic nie zadziałało. Próbowałem nawet dodać niestandardowy widok jako podzbiór kontrolera z paskiem nawigacyjnym. Myśląc, że jako rodzeństwo w hierarchii widoku, AL potraktuje to jako zwykły widok poza UINavigationBar
.
To też nie działa. Kontroler updateViewConstraints
został wywołany, ale nigdy nie został zastosowany. Pierwotna ramka widoku pozostała na CGRectZero
. Wygląda to tak, jakby AL zobaczył, że widok jest na szczycie UINavigationBar
, nawet jako rodzeństwo, i decyduje, że nie wymaga rozkładania.
Oczywiście, wypróbowałem bringSubviewToFront
, translatesAutoresizingMaskIntoConstraintstranslatesAutoresizingMaskIntoConstraints
i tak dalej. Ten ostatni dał piękny:
Zakończenie aplikację spowodowane nieprzechwyconego wyjątkiem „NSInternalInconsistencyException”, powód: „Auto-układ nieruchomego wymaganych po wykonaniu -layoutSubviews. MyNavigationBar's implementacja -layoutSubviews wymaga połączenia super. '
Więc pytanie brzmi, czy ktoś załadowane niestandardowego widoku z Al z XIB i skutecznie ustawić to jako customView
na UIBarButtonItem
? Jeśli tak to jak?
Nie zgłosiłem jeszcze do tego radaru, ale wpadłem też na to i wydaje się, że to błąd iOS 6. Utworzenie UIBarButtonItem i jego widok programowo wykazuje ten sam problem. – Ryan
Czy znalazłeś rozwiązanie tego problemu? – Redwarp
Jakieś wiadomości na ten temat? Myślę, że nadal mam podobny problem (aczkolwiek z paskiem narzędzi) w iOS 7. –