2012-04-06 25 views
0

Ich vermisse wahrscheinlich die Grundlagen hier ... Gibt es eine Möglichkeit, mehr als ein Objekt zu einer Zeit mit dem Interface Builder in Xcode 4.2 zu verknüpfen?Wie verknüpft man mehr als ein Objekt in Xcode 4.2?

Ich habe Tonnen von UIButtons in meinem UIView. Alle von ihnen nennen nur eine Methode (sagen wir - (IBAction)buttonPushed:(UIButton *)aButton), die je nach Absender etwas anderes tun sollte. Ich kann keinen Weg finden, sie alle gleichzeitig mit meiner Methode zu verbinden. Jeder Rat wird sehr geschätzt ...

N.B. Ich verwende Xcode 4.2 auf Snow Leopard, ohne Storyboard.

+1

Ich kann nicht einen Weg in IB denken ... Ich nehme nicht an, dass "Tonnen von UIButtons" viel betrachtet wurden. :) Ich stelle mir vor, du könntest es in code mit viewDidLoad machen: Subviews untersuchen, nach Buttons suchen und ihr Ziel-/Aktionsverhalten einstellen. –

+0

Uh !!! Meinst du mit addTarget: action: forControlEvents: in einer for-Schleife? Gute Idee!!! – Beppe

+1

IBActions können vielen Schaltflächen zugewiesen werden, indem Sie einfach die blaue Linie zu jeder Schaltfläche ziehen. – CodaFi

Antwort

0

Es scheint, dass es nicht möglich ist, mehr als ein Objekt in Xcode 4.2 mit IB zu verbinden.

Ich endete mit einer for-Schleife in meinem Code, wie zuerst von Phillip Mills vorgeschlagen (+1 zu seinem Kommentar).

Hier mein Code:

for (UIButton *aButton in [self.view subviews]) { 
    [aButton addTarget:self 
       action:@selector(buttonPushed:) 
     forControlEvents:UIControlEventTouchUpInside]; 
} 

Vielen Dank allen für Ihre Hilfe !!!

0

Dies sollte einfach funktionieren. Das heißt, Sie

  1. Haben Sie Ihre IBAction definiert
  2. Sie die „retuschieren innen“ (oder eine andere gewünschte Aktion) heften sich an das Verfahren für jede Taste
  3. Sie den Tag-Wert auf jeder Taste eingestellt
  4. In Ihrer IBAction erhalten Sie den Tag aus Sender und entsprechend handeln

    - (IBAction)buttonPressed:(id)sender; 
    { 
        NSInteger tag = [sender tag]; 
        // switch statement or some other check against tag value 
    } 
    
+0

Das ist eigentlich, was ich tue, aber mein Ziel ist es, Punkt 2 zu beschleunigen und zu vermeiden, für jeden Knopf zu verknüpfen ... (Jedenfalls schätze ich deine Zeit und Mühe) – Beppe

+0

Ah, deine Frage missverstanden. Ich glaube nicht, dass IB auf diese Weise eine Mehrfachauswahl ermöglicht. Sie können dies selbstverständlich über einen Code erreichen, aber das ist auch nicht Ihre Frage. Goodluck –

+0

@RyanCrews hat nichts falsches erwähnt. Ich weiß nicht, wer ihn downvoted.Aber ich werde ihn auffrischen. Beppe erwähnte nicht, dass er das Etikett bereits benutzt hatte.Also diese Antwort ist auch nur richtig. –

0

A fo R-Loop könnte eine gute Idee sein. Halten Sie ein NSArray der Tasten und etwas tun, wie folgt aus:

for (int i = 0; i < [myArray count]; i++) { 
    [(UIButton*)[myArray objectAtIndex:i] addTarget:self action:@selector(buttonPushed:) forControlEvents:UIControlEventTouchUpInside]; 
    [(UIButton*)[myArray objectAtIndex:i]setTag:i]; 
} 

(von meinem iPhone kommen, das ist das Beste, was ich tun könnte, es ist ein wenig rau und vielleicht nicht kompilieren, aber Sie erhalten den Kern.).

Verwandte Themen