Domanda

Sto provando a fornire i tableviewcell diversi backgroundColor con colorwithPatternImage e non funziona come previsto. La documentazione non dice nulla sulla possibilità di utilizzare solo un modello alla volta.

Dire che ho 3 righe e ho impostato lo sfondo in questo modo:

Cell1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"red.png"]];

Cell2.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"green.png"]];

Cell3.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"blue.png"]];

Tutte e 3 le righe sarebbero rosse. È come se ci fosse del colore globale che viene restituito.

colorWithPatternImage restituisce kCGColorSpaceModelPattern 1 per ogni chiamata, indipendentemente dall'immagine trasmessa. Se fosse vero che hai solo 1 modello globale alla volta, allora il colore dovrebbe essere l'ultimo set, in altre parole blu.

Questo non ha senso. Qualcuno ha qualche esperienza interna su ciò che Apple sta facendo qui?

Modifica Uso anche uno schema diverso in una vista completamente separata e influenza comunque gli schemi dell'altra vista. Sono convinto, sebbene la documentazione non lo affermi, che sei limitato a un modello di immagine UIColor alla volta. Triste.

È stato utile?

Soluzione

Per quanto posso vedere questo non è o non è più vero. Ho qui un paio di UITableViewCells, in cui ognuno ha uno sfondo diverso, senza problemi.

Altri suggerimenti

Che cos'è Cell1? Dove (in quale metodo) li stai impostando?

Direi che dovresti fare tutto questo in

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {      
      // create cell
    }

    // Set up the cell...

    // set up a background color
    if (something)
        cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"red.png"]];
    else (another)
        cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"green.png"]];
    else
        cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"blue.png"]];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top