Domanda

Ho bisogno di cambiare la selezione del colore blu predefinito di vista tabella a qualche colore personalizzato. Esiste un modo per farlo. Aiutami

È stato utile?

Soluzione

Il modo migliore per farlo è come questo:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"myCellId";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        UIView *v = [[[UIView alloc] init] autorelease];
        v.backgroundColor = [UIColor redColor];
        cell.selectedBackgroundView = v;
    }
    // Set up the cell...
    cell.textLabel.text = @"foo";
    return cell;
}

La parte rilevante per voi è il cell.selectedBackgroundView = v; di istruzioni. È possibile sostituire la vista molto di base 'v' qui con qualsiasi vista che ti piace.

Altri suggerimenti

Ho anche imbattuto in questo problema con il tentativo di creare viste personalizzate delle cellule selezionate per la cellula raggruppato. Ho risolto questo problema creando 3 tipi di immagini per la parte superiore delle cellule, centrale e inferiore assumendo che ci sarà una cella centrale.

NSString *imageFile;

if (row == 0) {
 imageFile = @"highlighted_cell_top.png";
} else if (row == ([registeredDetailsKeys count] - 1)) {
 imageFile = @"highlighted_cell_bottom.png";
} else {
 imageFile = @"highlighted_cell_middle.png";
}

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageFile]];

cell.selectedBackgroundView = imageView;

Non è forse un modo più semplice, ma io sono contento del risultato.

Non credo che è possibile utilizzare un colore personalizzato. Tuttavia, è possibile utilizzare la seguente proprietà di UITableViewCell

@property(nonatomic) UITableViewCellSelectionStyle selectionStyle

Lo stile di selezione è una costante backgroundView che determina il colore di una cella quando viene selezionato. Il valore di default è UITableViewCellSelectionStyleBlue. Dal momento che

typedef enum {
   UITableViewCellSelectionStyleNone,
   UITableViewCellSelectionStyleBlue,
   UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle;

è possibile passare dal blu al grigio di default, o nessuna selezione di colore a tutti.

Assicurarsi che dopo si dichiara nell'intestazione

@property(nonatomic) UITableViewCellSelectionStyle selectionStyle

Implementazione

cell.selectionStyle = UITableViewCellSelectionStyleGray

dove UITableViewCellSelectionStyleGray può essere UITableViewCellSelectionStyleNone, UITableViewCellSelectionStyleBlue, UITableViewCellSelectionStyleGray.

Un altro modo per farlo sarebbe quello di muoversi in una nuova vista sul tuo cellulare, con qualsiasi colore vorreste e il 50% o giù di lì di opacità. Si sposta questo punto di vista sopra alla cella quando si ottiene un -setSelected: animato: chiamare. Quando dico mossa, in realtà si può sempre avere una vista sulla parte superiore del tuo cellulare, ma basta girare la po 'nascosto e spegnendo di cui hai bisogno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top