Articoli con Tag ‘tag’

iPhone: l’utilissima proprietà tag

Tutti gli oggetti che derivano dalla classe <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>, ereditano l’utilissima proprietà <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>. Questa proprietà è un vero e proprio user-data (un “posto” che lo sviluppatore usa per usi generici) di tipo <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>, dove quindi possiamo memorizzare esclusivamente numeri.

L’uso che se ne può fare dipende ovviamente dalle circostanze tuttavia risulta utilissimo per individuare un determinato oggetto allo scattare di un evento comune. Ad esempio immaginiamo di avere due <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIAlertView_Class/UIAlertView/UIAlertView.html">UIAlertView</a> che rispondono allo stesso evento:

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

// ...

// secondo alert
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Secondo" message:@"Secondo Alert" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil,nil];
[alert show];
[alert release];

// Evento
// Cliccandi sul bottone OK degli Alter verrà chiamata questa funzione
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    // todo
}

Nota: negli esempi di codice troverete l’indicazione C++. Questo non è del tutto corretto in quanto, come saprete, il linguaggio usato è Objective-C. Questo a causa del fatto che il Plugin che uso per visualizzare il codice sorgente non supporta Objective-C, e il C++ è quello che meglio gli si avvicina.

Come distinguere i due Alert? Utilizzando appunto la proprietà tag. Dopo la creazione dell’oggetto alert basta inserire:

1
2
3
4
5
6
7
8
9
10
11
12
13
// primo alert
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Primo" message:@"Primo Alert" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil,nil];
[alert setTag:1]; // imposto il tag di questo Alert ad 1
[alert show];
[alert release];

// ...

// secondo alert
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Secondo" message:@"Secondo Alert" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil,nil];
[alert setTag:2]; // imposto il tag di questo Alert ad 2
[alert show];
[alert release];

Ora modifichiamo l’evento in modo da capire quale Alert è stato chiuso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Evento
// Cliccandi sul bottone OK degli Alter verrà chiamata questa funzione
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    switch (alertView.tag) {
        case 1:
            // Primo Alert
            break;
        case 2:
            // Secondo Alert
            break;
        default:
            break;
    }
}

Stessa identica tecnica può essere utilizzata se abbiamo una serie di <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html">UIButton</a> creati runtime. Ad esempio:

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

    // stesso evento per tutti
    [mybutton addTarget:self action:@selector(onTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:mybutton];
}

Nell’evento onTouchUpInside recuperiamo dal sender (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>) la proprietà <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 {
    unsigned int button_tag = ((UIView *)sender).tag;
    // todo
}

Continua...

Very short snippet: visualizzare una lista di post per categoria o tag

Due funzioni utili, personalizzabili a piacere, da usare per mostrare gli ultimi n post di una categoria o per uno o più tag. Le funzioni, come vedrete, sono molto simili e si basano entrambe su un loop generato tramite query_post(). La prima, show_title_cat(), mostra gli ultimi post (in questa versione solo il titolo) di una determinata categoria:

Continua...

WordPress MU: aggregare le singole tag cloud dei blog

Potrebbe non capitarvi mai di dover aggregare le singole tag cloud in WordPress MU. Inoltre, in determinati contesti, potrebbe non aver senso mostrare una “nuvola” con le tag di blog eterogenei. Tuttavia, nel caso remoto che a qualcuno servisse, ecco un modo semplice di mostrare una tag cloud aggregata.

Continua...


Stop SOPA