35 Stimmen

Einstellen der Hintergrundfarbe einer Tabellenansichtszelle auf dem iPhone

Ich möchte den Effekt erzielen, dass eine Zelle der Tabellenansicht einen blauen Hintergrund hat, die nächste weiß ist, die nächste wieder blau und dann wieder weiß und so weiter... Könnten Sie mir mitteilen, wie ich das machen kann?

Vielen Dank.

0 Stimmen

1 Stimmen

@willcodejavaforfood das ist ein sehr unhilfreicher Kommentar und hat nichts mit der Frage des OPs zu tun

3voto

hillmark Punkte 757

Wenn Sie die Standardeinstellung für die Tabellenzelle verwenden, färben die folgenden beiden Eigenschaften sowohl den Hintergrund der Zelle als auch die Hintergrundfarbe des Labels, ohne dass ein benutzerdefiniertes Label als Unteransicht des Inhalts der Zelle erstellt werden muss.

cell.textLabel.backgroundColor = [UIColor redColor];
cell.contentView.backgroundColor = [UIColor redColor];

0 Stimmen

Diese Antwort klärt einige der in einigen der anderen Antworten skizzierten Probleme, aber ich habe nicht die erforderliche Bewertung, um dazu Stellung zu nehmen.

3voto

Henry Sou Punkte 884

//Zeitsparende Methode:

//In der Zellen für Index Methode:

static NSString* evenIdentifier = @"even";
static NSString* oddIdentifier = @"odd";

__weak NSString* identifier;
if(indexPath.row %2 ==0)
{
    identifier = evenIdentifier;
}else{
    identifier = oddIdentifier;
}

cell = dequeue..WithIdentifier: identifier;
if(cell == nil){
    cell = allocOrLoadNib...;
    cell.backgroundColor = (indexPath.row %2 ==0 ? evenColor : oddColor);
}

//Ändere den Zelleninhalt und gib sie dann zurück. Einfache Aufgabe.

//Das ist ein allgemeiner Code. Bitte kopiere diesen nicht direkt.

3voto

kirans_6891 Punkte 121

Dies hat für mich funktioniert.. In cellForRowAtIndexPath ,

cell.textLabel.backgroundColor = [UIColor clear];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor grayColor]; //welche Farbe du möchtest
cell.backgroundColor = cell.contentView.backgroundColor;

Für deine Anforderung, wie bereits erwähnt, kannst du basierend auf dem indexPath % 2 Wert die obige Funktion ausführen.

2voto

John M. P. Knox Punkte 713

Dieser Code ist eine etwas sauberere Lösung für den Fall, dass Sie das integrierte Textetikett verwenden und nicht möchten, dass die weiße Hintergrundfarbe des Textetiketts die Hintergrundfarbe verdeckt. Dies behebt auch das Problem, die abgerundeten Ecken eines gruppierten Style von TableView zu verletzen (was passiert, wenn Sie cell.contentView.backgroundColor anstelle von cell.backgroundColor verwenden):

UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.backgroundColor = [UIColor redColor];
cell.textLabel.backgroundColor = [UIColor clearColor]; //transparenter Hintergrund

0voto

Bhavesh Nayi Punkte 3598
    UIView *bg = [[UIView alloc] initWithFrame:cell.frame];
    bg.backgroundColor = [UIColor colorWithRed:175.0/255.0 green:220.0/255.0 blue:186.0/255.0 alpha:1]; 
    cell.backgroundView = bg;
    [bg release];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X