iPhone: die nützlichste Eigenschaft Tag

Alle Objekte, die gewonnen wurden aus <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/cl/UIView">UIView</a> erben die nützlichen Eigenschaften <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW25">tag</a> Diese Eigenschaft ist eine reale Benutzer-Daten (ein "Ort", die der Entwickler für allgemeine Zwecke) des Typs <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html#//apple_ref/doc/c_ref/NSInteger">NSInteger</a> so, wo wir speichern können nur Zahlen.

Die Anwendungen, auf die sie offensichtlich hängt von den Umständen aber kann, ist es sinnvoll, ein bestimmtes Objekt zu nehmen ein gemeinsames Auftreten zu identifizieren. Angenommen, Sie haben zwei <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIAlertView_Class/UIAlertView/UIAlertView.html">UIAlertView</a> Reaktion auf das gleiche Ereignis:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/ / First Alert
[ [ UIAlertView alloc ] initWithTitle : @ "Primo" message : @ "Primo Alert" delegate : self cancelButtonTitle : @ "OK" otherButtonTitles : nil , nil ] ; UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "First"-Meldung: @ "First Alert" zu delegieren: self cancelButtonTitle: @ "OK" otherButtonTitles: nil, nil];
; [Alert show];
; [Alert release];

/ / ...

/ / Zweite Warnung
[ [ UIAlertView alloc ] initWithTitle : @ "Secondo" message : @ "Secondo Alert" delegate : self cancelButtonTitle : @ "OK" otherButtonTitles : nil , nil ] ; UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "Second"-Meldung: @ "Second Alert" zu delegieren: self cancelButtonTitle: @ "OK" otherButtonTitles: nil, nil];
; [Alert show];
; [Alert release];

/ / Event
/ / OK-Taste Cliccandi dieser Funktion wird aufgerufen, Alter werden
void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) {buttonIndex
/ / Todo
}

Hinweis: Codebeispiele in C + + finden Sie die Anfahrtsbeschreibung zu finden. Dies ist nicht ganz korrekt, denn wie Sie wissen, ist die Sprache Objective-C. Dies ist aufgrund der Tatsache, dass die Plugins, die ich verwenden, um den Quellcode einzusehen nicht unterstützt Objective-C und C + + ist der am besten nähert sich ihm.

Wie zwischen den beiden aufmerksam zu unterscheiden? Gerade mit der Eigenschaft tag. Nach der Erstellung des alert geben Sie einfach:

1
2
3
4
5
6
7
8
9
10
11
12
13
/ / First Alert
[ [ UIAlertView alloc ] initWithTitle : @ "Primo" message : @ "Primo Alert" delegate : self cancelButtonTitle : @ "OK" otherButtonTitles : nil , nil ] ; UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "First"-Meldung: @ "First Alert" zu delegieren: self cancelButtonTitle: @ "OK" otherButtonTitles: nil, nil];
1 ] ; // imposto il tag di questo Alert ad 1 [Alert EINSTELLUNG: 1] / / die tag für diese Warnung zu 1
; [Alert show];
; [Alert release];

/ / ...

/ / Zweite Warnung
[ [ UIAlertView alloc ] initWithTitle : @ "Secondo" message : @ "Secondo Alert" delegate : self cancelButtonTitle : @ "OK" otherButtonTitles : nil , nil ] ; UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "Second"-Meldung: @ "Second Alert" zu delegieren: self cancelButtonTitle: @ "OK" otherButtonTitles: nil, nil];
2 ] ; // imposto il tag di questo Alert ad 2 [Alert EINSTELLUNG: 2] / / die tag für diese Warnung zu 2
; [Alert show];
; [Alert release];

Nun ändern Sie die Veranstaltung, um zu verstehen, die Alarmstufe wurde geschlossen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/ / Event
/ / OK-Taste Cliccandi dieser Funktion wird aufgerufen, Alter werden
void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) {buttonIndex
alertView.tag ) { switch (alertView.tag) {
: Fall 1:
/ / First Alert
break;
: Fall 2:
/ / Nach-Alert
break;
Standard:
break;
}
}

Exakt gleiche Technik kann verwendet werden, wenn wir eine Reihe von haben werden <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html">UIButton</a> run-time. Zum Beispiel:

1
2
3
4
5
6
7
8
9
10
unsigned int i = 0 ; i < 10 ; i ++ ) { for (unsigned int i = 0; i <10; i + +) {
[ [ UIButton buttonWithType : UIButtonTypeCustom ] initWithFrame : CGRectMake ( i * 20 , i * 20 , 20 , 20 ) ] ; UIButton * myButton = [[UIButton buttonWithType: UIButtonTypeCustom] initWithFrame: CGRectMake (i * 20, * 20, 20, 20)];
@ "But" forState : UIControlStateNormal ] ; [MyButton setTitle: @ "Aber", Forst: UIControlStateNormal];
i ] ; // imposto il tag [MyButton EINSTELLUNG: i]; / / die tag

/ / Das gleiche Veranstaltung für alle
self action : @selector ( onTouchUpInside : ) forControlEvents : UIControlEventTouchUpInside ] ; [MyButton addTarget: self Aktion: @ selector (onTouchUpInside:) forControlEvents: UIControlEventTouchUpInside];

mybutton ] ; [Self.view addSubview: myButton];
}

(dove eseguiamo un casting <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/cl/UIView">UIView</a> Im Falle onTouchUpInside vom erholen sender (wo wir führen ein Casting <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/cl/UIView">UIView</a> Eigentum <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW25">tag</a>

1
2
3
4
void ) onTouchUpInside : ( id ) sender { - (Void) onTouchUpInside: (id) sender {
( ( UIView * ) sender ) .tag; button_tag unsigned int = ((UIView *) sender) tags.;
/ / Todo
}

2 Kommentare zu "iPhone: Das sehr nützliche Eigenschaft tags"

  1. 12. Juni 2009 Andrea Leganza :

    . Sie sollten nicht zu missbrauchen die Eigenschaften Tag (offensichtlich ist dies nicht der Fall ist), wenn Sie in Situationen, in denen die Aussicht ist viel Struktur sind, so dass x Unteransicht, wie diese Liste mit einem beibehalten wird NSArray , diese gescannt wird, um zu erfahren diesem tag .
    le subview ) Wenn die Suche durch den Vergleich der numerischen durchgeführt wird tag sequentiell (und ich glaube nicht, dass es nicht auf andere Weise geschehen, die maximal um intern tag der subview )

    objectatindex ist nicht wirklich gut aber ich habe der Einfachheit halber, um die Semantik zu verstehen.

    1
    2
    3
    4
    5
    Abtastzyklus {Unteransichten
    self.subviews.objectatindex ( i ) .tag == tagrichiesto ) { if (self.subviews.objectatindex (s). tagrichiesto == tag) {
    i ) ; self.subviews.objectatindex return (s);
    }
    }

    1) im besten Fall der tag ist der erste, so dass wir einen Vergleich gemacht
    2) in einem Fall gegen die mediane haben wir n
    3) Im schlimmsten Fall ist es nicht vorhanden ist, führten wir für jede Iteration x gegen unnötige

    ipotizzando il caso peggiore del non trovato: avremo effettuato 100*10=1000 confronti inutili, per non parlare di invocazioni in cascata all'array subview e ai vari metodi di analisi). Es wird oft verwendet, um Zellen der Tabelle zugreifen, und in dieser Situation, wo wir hunderte von Zeilen mit x haben subview pro Zeile, dass die meisten Abfälle (wenn man 100 Zellen mit je 10 sind subviews Annahme der schlimmste Fall von nicht gefunden: wir aus 100 * 10 = 1000 Vergleiche sinnlos, nicht auf die Reihe von Anrufungen Kaskade Subview und die verschiedenen Methoden der Analyse ganz zu schweigen).

  2. 12. Juni 2009 Andrea Leganza :

    visto che confrontiamo gli indirizzi fisici dei due oggetti (più veloce di così non si può). Ich vergaß ... in manchen Situationen kann es ratsam sein, eine Verwendung iboutlet wenn wir IB (Interface Builder) verwenden oder haben eine Reihe von Eigenschaften mit diesen Objekten verbunden sind, an die wir direkt aus einer beliebigen Methode unserer Klasse, wenn der Vergleich ein Objekt oder ein anderes in diesem Fall einfach mit dem Betreiber vorgenommen werden == Da wir die physikalischen Adressen der beiden Objekte (schneller, so dass Sie nicht können) zu vergleichen.
    per evitare di aggiungere variabili locali. In dem gezeigten Beispiel ist fein natürlich, schließlich einen Vergleich zwischen "Ganze" im switch , aber ich habe viele Gebrauch / Missbrauch des Gesehenen tag zu vermeiden, indem lokale Variablen.

    gute Planung

Hinterlasse einen Kommentar

XHTML TAG PERMIT: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERTION CODE:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL