ansteueren von Interface-Objekten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ansteueren von Interface-Objekten

    Hi,
    ich hab mich schon durch einige tuts durchgearbeitet und auch schon ein paar lustige dinge hinbekommen. mit fehlt aber immer noch ein klarer überblick wie die verschiedenen objekte in einem fenster angesteuert werden können.
    z.b. ist es mir noch nicht gelungen zu bestimmen, ob ein bestimmter button innerhalb eines tabViews angeklickt wurde.
    gibt es irgendwo eine ausführliche übersicht darüber, wie die interface-elemente (buttons, progress bar, checkboxen, etc.) angesteuert werden?

    davon abgesehen: xcode find ich echt spannend und ich würde gerne den schritt von applescript zu obj-c schaffen. objektorientierung hab ich schon drauf, aber was ich hier in anderen threads gelesen habe (retains, flags beim compilieren, graphen, ...) schreckt ganz schön ab. zumal in den dokumentationen von apple für mich nicht wirklich hilfe zu finden war.
    habt ihr tips zu literatur/websites, die mich über diese hürde bringt?
  • RE: ansteueren von Interface-Objekten

    Also, eine "ausführliche Übersicht" darüber, wie die Interface Elemente funktionieren, gibt es bei Apple: die Dokumentation. Warum diese Dir nicht hilft, weiß ich nicht. Wo hast Du denn in der Dokumentation gelesen? Nur in den Klassenbeschreibungen stöbern bringt einem die Konzepte in Cocoa nicht nahe. Ganz am Anfang jeder Klassenbeschreibung werden immer Links zu Beschreibungen der Konzepte gegeben, an denen die jeweilige Klasse "beteiligt" ist. Schau mal hier oder hier vorbei, um erst mal einen generellen Einstieg zu finden.

    Zu den Interface Elementen mal ein paar allgemeine Worte. "Angesteuert" werden diese vor allem mit der Maus und Tastatur :]. Die Interface Elemente reagieren dann selbst auf diese "Ansteuerung" und informieren dann ein anderes Objekt, welches Du festlegen kannst. Kurz: Du fragst nicht die Elemente ob sie angeklickt wurden, sondern Du lässt Dich von den Elementen informieren, wenn's so weit ist.

    Literaturtipps findest Du hier im Forum über die Suchfunktion reichlich.

    Michael
  • RE: ansteueren von Interface-Objekten

    Du musst ja auch nicht gleich alles lernen. Ich mache das nun schon länger und es gibt immer noch Oasen der Unkenntnis bei mir. Ich glaube, niemand hier kennt Cocoa vollständig. (Ist ja auch ein ständiges Hinterhergerenne.)

    Grundsätzlich läuft es umgekehrt, wie du dir es vorstellst. Das hat Michael bereits erklärt. Man nennt das Action-Target-Paradigma: Wer (aka ein Button) etwas zu sagen hat, schickt eine Nachricht an jemanden, der sich vorher anmeldete, wobei du diese Anmeldung in der Regel im IB vornimmst. Dazu musst du eine Klasse anlegen, deren Instanzobjekte Targets sein können. Alles viel zu theoretisch, daher mal ein praktisches Anwendungsbeispiel:

    Du hast ein Fenster mit einem Button. Jetzt wechslst du im IB in die Classes-Ansicht im Hauptfenster. Dort suchst du die Klasse NSObject (Entweder ganz nach links scrollen oder oben rechts im Suchfeld.) Anwählen. Im Menü Classes kannst du dann eine Subklasse erzeugen (Subclass NSObject). Nenne sie Controller. Im Inspector kannst du bei den Attributes eine Action hinzufügen. Einfach oben Attributes auswählen und dann im Teil darunter Actions. Add klicken. Gib als Namen "doSomething:" ein. Speichern. Im Menü Classes nun Create Files for Controller anklicken und den Anweisungen ohne Weiteres folgen. Jetzt gehst du wieder ins Menü Classes und wählst dort "Instantiate Controller". Die Ansicht im Hauptfenster wechselt wieder zu Instances und du hast dort nun ein Instanzobjekt. Jetz ctrl-draggst du vom Button auf diesen neuen Controller. Im Inspector erscheint automatisch die Action-Methode, die du vorhin anglegt hast. Unten rechts einfach auf connect klicken.

    Wenn jetzt der Button geklickt wird, wird diese Methode aufgerufen. Du kannst in Xcode die Dateien Controller.h und Controller.m öffnen, um in der Methode etwas Sinnvoplles zu machen. Am Anfang bedeutet das vor allem ein NSLog, der irgendeinen Text auusgibt und Freude bei dir verursacht. Erste Hürde genommen!

    BTW: Das war jetzt alles aus dem Kopf. Fehler also bitte ier reporten, damit andere das richtig sehen.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: ansteueren von Interface-Objekten

    Danke für eure Antworten und Asche auf mein Haupt - die wesentliche Info meinerseits fehlte: eigentlich wollte ich meinen Beitrag in die Rubrik AppleScript stellen, aber ich alter Schussel hab nicht aufgepaßt, sorry...
    Vielleicht erklärt das auch, warum mir die Apple-Dokumentation nicht viel hilft; der Bereich AS ist da eben nicht gerade ausführlich (oder ist mir da was entgangen?).
    Grundsätzlich will ich mir erstmal nur zu meinen AS-Programmen mit IB ein schönes Interface basteln. Und dazu fehlen mir eben die Infos wie die diversen Elemente angesprochen müssen.
  • RE: ansteueren von Interface-Objekten

    Hehehehehehe, ein beliebter Fehler hier. Ich antworte gerne mal im Carbon-Forum mit Cocoa. Auch nicht schlecht.

    Tja, bei AS kann ich dir leider nciht weiterhelfen. Sorry!
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Erstmal Hallo Forum ;).

    Ich bin grade am weiterentwickeln des Programm Fan Control und habe da schon einige Sachen getan. Jetzt will ich allerdings das Interface erweitern und weiß nicht wie ich in XCode Objekte auf dem Interface anspreche.

    Ich habe die Anleitung aus dem Kopf von dir schon gelesen, leider hilft mir die nicht weiter da ich im letzten Schritt, dem CTRL-Drag immer im Inspector im Target/Action Reiter "Not Applicable" angezeigt bekomme. Das von dir beschriebene Verfahren ist so ja auch in der Doku von Apple zu finden und andere Tuts. machens genauso... Ich habe es dann in einem Frischem Xcode Project mit frischen Interface nochmal probiert und da gings auch nicht...

    Kann mir wer weiterhelfen?
    MBP 2,16 C2D; 2GB; 120GB; 128MB + 100GB Ext+ iPod Video 60GB
  • Gut ich habe ein Outlet angelegt und kann das auch connecten, wie komme ich an die Target/Action heran? Mir werden ja Interface und Implementierung angelegt im xCode Project und auch die Methode doSomething: wird angelegt. Aber ich kann immernoch keine Action für den Button auswählen.
    MBP 2,16 C2D; 2GB; 120GB; 128MB + 100GB Ext+ iPod Video 60GB