2012-02-02 4 views
9

Buduję aplikację na iOS i mam większość wbudowanego kodu/GUI (jego pojedyncza aplikacja do przeglądania). Teraz mam plik .xib i controller.h obok siebie i chcę skojarzyć kliknięcie przycisku z określoną akcją. Za każdym razem, gdy próbuję, nic się nie dzieje. Wskażnik UI, który przeciągam, pokazuje się, ale nie pozwala mi połączyć się z metodą. Dzieje się tak w przypadku wszystkich obiektów/metod.Ctrl-Drag od przycisku do metody nie działa. Xcode/Interface Builder

Mam prawie identyczny projekt, który działa również dobrze!

Odpowiedz

20

Wybierz swój plik XIB, a następnie wybierz "Właściciel pliku", który jest żółtą kostką. Na pasku narzędzi Narzędzia, wybierz ikonę z kółkiem i strzałką w środku (która jest "Inspektorem połączeń"). Możesz wtedy Control + Przeciągnij do swojego przycisku.

//// Edit ////

Po zbadaniu projektu ... pewien, że usunął storyboard, a następnie dodał .xib ale nie ustawić to klasa, lub połączyć to widok jak wylot.

Aby to zrobić:

  1. Wybierz nowy widok (XIB), a następnie selct widoku głównym, aw inspektora tożsamości, ustaw to klasa niestandardowej nazwy klasy „AVYSViewController”.

  2. Przejście do Inspektora połączeń i Control + Przeciągnij wylot "Widok" do głównego widoku w XIB.

Również twój projekt szukał pliku MainStoryBoard.storyboard. Pozbądź się tego ustawienia, wybierając projekt, a następnie wybierając cel, a na karcie "Podsumowanie" usuń wszystko w polu "Main Storyboard".

Uwaga: Sprawdziłem, czy ustawienia projektu były prawidłowe, zanim usunąłem ustawienie scenorysów i nie zwróciło ono ŻADNYCH błędów, więc uważaj na ten problem w przyszłych projektach.

+0

Przykro mi, myślę, że podążyłem za tobą poprawnie, po prostu nie rozumiem zakończenia. po tym, jak mam inspektora łączności, co ciągnę do mojego przycisku? – Dreken105

+0

Powinieneś przeciągać swoje działanie, które będzie wymienione w "Odebranych działaniach" w inspektorze połączeń. Jeśli go nie ma, możesz mieć problemy z kodem, które powinniśmy zbadać. – jhilgert00

+0

wygląda na to, że jest. co mam ci pokazać? tylko kontroler.h? – Dreken105

0

Myślę, że powinieneś przeformułować swoje pytanie .. To bardzo mylące. Ale jeśli rozumiem, co mówisz, teraz masz pliki otwarte obok siebie w użyciu asystenta redaktora. Plik Xib po lewej stronie, plik .h po prawej. poprawny?

Teraz próbujesz połączyć zdarzenie w formancie, z metodą zdefiniowaną w pliku .h. dobrze?

Więc jeśli jest faktycznie widząc metody w pliku .h, do którego chcesz się połączyć, ale edytor nie pozwala ci na link do niego, to istnieje prawdopodobieństwo, że masz plik XIB- obok niewłaściwego pliku .h. Czy jesteś pewien, że plik .xib i .h, które są obok siebie, są nazywane kontrolerem? controller.h i controller.xib?

+0

Tak, to z pewnością odpowiednie pliki i poprawnie zinterpretowałeś pytanie. przepraszam za zamieszanie. – Dreken105

+0

OK, jeśli są one takie same, to jaka kontrola polega na próbie połączenia metody z tym, czy jest to przycisk? jeśli jest to przycisk, upewnij się, że masz metodę zdefiniowaną jako ** - (IBAction) myMethod: (id) nadawca; ** Czy robisz to? –

+0

yep: '- (IBAction) showQuestion: (id) nadawca; - (IBAction) showAnswer: (id) nadawca; ' – Dreken105

1

Myślę, że czytam tę samą książkę co ty ("Programowanie iOS" Big Nerd Ranch). Jeśli tak, to tak, miałem taki sam problem jak ty. Prawdą jest, że używam swojego laptopa do przechodzenia przez vnc do skrzynki mac, aby pracować na xcode, więc pomyślałem, że to nie przechwytywanie klawiatury vnc, ale okazało się, że nie było to vnc, ponieważ mogłem kliknąć prawym przyciskiem myszy/przeciągnąć cntl-click inne rzeczy.

Wprawdzie nie zrobiłem wiele badań na temat tego, dlaczego nie działa, ale w międzyczasie po prostu kliknąłem przycisk, który pokazuje zdarzenia, które przycisk emituje, a następnie kliknął "przeciągnął" Up Inside "i upuścił go na kontroler/właściciela, który wyświetlił akcje/metody, aby zawiesić zdarzenie. Jeśli spojrzysz na stronę 17 (jeśli czytasz tę samą książkę), to jest to wydarzenie, które zostało połączone.

Przepraszam, jeśli są jakieś oczywiste rażące błędy z tym, co właśnie mówię, dopiero co zacząłem czytać tę książkę dzisiaj po dużym obiedzie.