Mam kontroler widoku, który jest szczegółowym widokiem tabeli. Kliknięcie wiersza tabeli powoduje przejście do widoku szczegółów. Widok szczegółowy jest osadzony w kontrolerze nawigacyjnym w taki sposób, że w lewym górnym rogu paska nawigacji znajduje się przycisk, który odsyła z powrotem do tabeli. Na razie w porządku.
Chcę teraz dodać przycisk edycji po prawej stronie paska nawigacji, aby można było edytować widok szczegółów. Mój plan jest taki, że modalnie doda kolejny kontroler widoku, który pozwoli ci edytować szczegóły elementu. Standardowe rzeczy.
Jednak gdy próbuję przeciągnąć element przycisku paska z listy obiektów na pasek nawigacji, to nie zajmie. Zamiast tego, gdy puszczę przycisk myszy, pozostawia przycisk paska na kontrolerze paska kart na dole. (Mój schemat nawigacji zawiera różne zakładki i dla każdej zakładki tabelę, widok szczegółowy itp.)
Każdy, kto zetknął się z tym wcześniej i może zasugerować, co robię źle, lub jakieś obejście, aby dodać element przycisku paska po prawej stronie ekranu nawigacji. Czy muszę to dodać w kodzie?
Dzięki za wszelkie sugestie.
źródło
Odpowiedzi:
Mam ten sam problem z Xcode6 i zauważyłem, że UINavigationItem jest dodawany automatycznie do pierwszego ViewController, który osadzasz w NavigationController, ale dla kolejnych ViewControllers będziesz musiał dodać go ręcznie w następujący sposób:
Teraz będziesz mieć przyciski paska przyklejone do górnej części sceny.
Aktualizacja Rozwiązanie nadal działa z XCode 7, ale chciałem dodać bardziej opisowe zdjęcie. Na wypadek, gdyby ktoś nie był zaznajomiony z wyżej wymienionymi nazwami standardowymi lub technicznymi. Zwróć uwagę na czerwone strzałki po prawej stronie, odnoszą się one do kroku 1, kroku 2 wspomnianego powyżej. Zwróć także uwagę na hierarchię widoków w lewym czerwonym prostokącie.
źródło
self.navigationItem.rightBarButtonItem = ...
będzie działał. Zgaduję, że kontroler UINavigationController na pierwszym VC tworzy jego instancję dla wszystkich kolejnych VC umieszczonych na stosie. Jednak ręcznie przeciągając jeden na to miejsce, dlaczego nie skończysz z dwoma elementami UINavigationItem jeden na drugim? Ten, który przeciągnąłeś ręcznie, a ten już tam jest z UINavigationController?Paskudna sztuczka:
Następnie zawartość będzie można edytować i będziesz mieć styl płynny, który nie został wycofany.
źródło
UIBarButtonItem
na kontrolerze widoku w Xcode 7.3 .W kontrolerze widoku Twojego scenariusza prawdopodobnie brakuje pliku
Navigation Item
. Możesz przeciągnąć go z biblioteki obiektów i upuścić na kontrolerze widoku.Będziesz wtedy mógł przeciągać i upuszczać elementy przycisków paska na lewą lub prawą stronę paska nawigacji.
źródło
Rozwiązałem to. przeciągnij „Element nawigacji” do widoku szczegółów. niż możesz przeciągnąć w pozycji przycisku paska.
źródło
Sposób, w jaki rozwiązałem ten problem, polegał na tym, że zamiast przeciągać UINavigationController do Storyboard i próbować dodać do tego UIBarButtonItems, przeciągnąłem do UITableViewController, a następnie przeszedłem do
Editor-> Embed In-> Navigation Controller
Co dało ten sam wynik co poprzednio, z wyjątkiem tego, że mogłem dodać UIBarButtonItems po obu stronach paska nawigacyjnego bez żadnych problemów.
źródło
Właściwie to problem z Xcode. Jedna sztuczka, która zadziałała, to dodanie przycisku paska w STRUKTURZE PLIKU PO LEWEJ STRUKTURY. Zainstalowałem bezpośrednie dodawanie widoku. Mam nadzieję, że ci to pomoże. :)
źródło
Myślę, że to błąd. Miałem ten sam problem, który naprawiłem, wyłączając klasy rozmiarów, a następnie włączając go.
Klasy rozmiaru można wyłączać i włączać w dokumencie Interface Builder.
źródło
Miałem też ten problem, zamknąć i ponownie otworzyć projekt działał dla mnie.
źródło
Uważam, że to dziwactwo XCode. Miałem ten sam problem. Musiałem zresetować Xcode i przesunąć rozmieszczenie rzeczy w scenorysie, aby w końcu zacząć działać. Już działa.
źródło
Myślę, że to błąd Xcode. W Xcode 8 zmień
segue
w scenorysie przed kontrolerem widoku paska kart na wszystkie jego opcje (show detail
,present
...). Następnie wróć doshow
. Spróbuj przeciągnąć elementy przycisków paska i zmodyfikować kafelek. Mi to pasuje!źródło
Czy próbowałeś „wyczyścić” swój projekt? Wiem, że czasami mi to pomaga (przejdź do „Produkt”> „Wyczyść”). Możesz też usunąć pasek nawigacji i spróbować ponownie.
Jeśli uważasz, że to błąd programistyczny, przekaż dalej swój kod. Chętnie pomogę w każdy możliwy sposób. :)
źródło
Musisz zresetować xCode IDE. Zamknij xCode i napisz poniższe kody na terminalu ... To zadziała.
źródło
Ten sam problem. Miałem kontroler widoku tabeli wewnątrz kontrolera nawigacyjnego i wiele kontrolerów widoku podążających dalej w dół łańcucha. „Element nawigacji” był tworzony automatycznie dla PIERWSZEGO głównego kontrolera widoku i mogłem dodać do niego „Element przycisku paska” bez problemu. Poprzez scenorys, przeciągnij i upuść. Ale to wszystko. Na następującym kontrolerze widoku tabeli i dalszych kontrolerach widoku, mimo że znajdowały się w początkowym kontrolerze nawigacji (pojawił się automatycznie wygenerowany przycisk powrotu), scenorys nigdy nie pozwolił mi dodać elementu przycisku paska.
Rozwiązanie Waela Showaira nie zadziałało dla mnie. Elementy przycisków paska nie były wyświetlane.
W końcu rozwiązałem to programowo (Swift 2.0):
Nie jest potrzebny żaden dodatkowy element nawigacyjny ani przycisk paska.
źródło
Ja też stanąłem przed tym samym problemem, mogłem rozwiązać ten problem, wybierając opcję kontrolera widoku głównego, a następnie w symulowanej macierzy zmieniłem opcję górnego paska na nieprzezroczysty pasek nawigacji i mogłem dodać element na górze paska nawigacji. ta odpowiedź komuś pomoże.
źródło
Miałem ten sam problem w xcode 8. Musiałem po prostu zamknąć xcode i ponownie otworzyć projekt, a następnie mogłem dodać przycisk paska do kontrolera głównego bez żadnych problemów.
źródło
Dla XCode 8
Tutaj jest wiele odpowiedzi. Wypróbowałem kilka z nich, ale nie mogłem. Więc znalazłem swoje rozwiązanie, po prostu wybierz swoją
ViewController
, przejdź do sekcji Attributes Inspector i zmień górny pasek na nieprzezroczysty pasek nawigacji i wysięgnik. Zobaczysz pasek nawigacyjny w swojej serii ujęć. Możesz zmienić tytuł lub dodać element. Jeśli nie chcesz zachować nieprzezroczystego , możesz zmienić styl na wywnioskowany .źródło
W Xcode 10 właśnie zmieniłem typ płynności przechodzącej do tego nowego kontrolera widoku na `` Push (przestarzały) '', dodałem element nawigacyjny, który był dozwolony po dokonaniu tego przełączenia. Jeśli przełączysz się z powrotem do pierwotnie pożądanego typu segue, element nawigacji pozostanie.
źródło
Zamiast przeciągać „Element przycisku paska” do „Kontrolera nawigacji”, przeciągnij go do „Kontrolera widoku szczegółowego”. Po osadzeniu widoku szczegółowego w „Widoku nawigacji” „Element nawigacji” zostanie dodany do „Kontrolera widoku szczegółowego”. Jeśli przeciągniesz „Element przycisku paska” na prawą stronę elementu nawigacji, element zostanie uwzględniony w „Elementach przycisku paska prawego”
źródło
jak powiedział Mark Lyons, zastosowałem to samo rozwiązanie.
źródło
W Xcode 11 możesz przeciągnąć przycisk na pasek nawigacyjny, aby utworzyć przycisk paska.
źródło