2016-03-23 9 views
0

Ich habe ein iOS Xcode 7.3 Projekt in Swift geschrieben 2. Ich habe ein UITableView, die ein array von Informationen des Typs enthält [String] genannt details. Wenn der Benutzer auf einen der UITableViewCells klickt, können sie segues zu einem anderen ViewController, wo sie Notizen für den ausgewählten detail eingeben können. Danach können sie segue zurück zum UITableView. Mein Ziel ist, wenn eine detail in der UITableView eine Notiz hat, die getippt wurde, dass backgroundColor der Zelle gelb wäre.Swift 2 farbiger Hintergrund von UITableViewCell zu bestimmt indexPath.rows

Unten ist:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    // Transfer details of selected cell to notes view 
    var selectedCell = details[indexPath.row] 
    detailsTransfer = selectedCell // Transfer detail information 
    detailLocation = indexPath.row // Transfer detail location in array 

} 

Dieser überträgt die details und location im array für Erläuterungen zur detail hinzufügen. Ich speichere dann den detailLocation zu einem neuen array vom Typ Int. Ich denke, um die Farbänderung in der cellbackground zu bekommen, müsste ich durch die [Int] Schleife und nur die cells in der UITableView würde eine backgroundColor ? Ich weiß nicht, ob das richtig ist und/oder wie/wohin dieser Code gehen würde. Vielleicht die Schleife in: tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! ?? Kann mir bitte jemand helfen? Vielen Dank.

UPDATE

Mein cellForRowAtIndexPath ist:

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { 

    let cellIdentifier = "LogTableViewCell" 

    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! LogTableViewCell 

    cell.logLabel?.text = details[indexPath.row] 

    return cell 
} 

Immer noch versuchen indexPath.row für Farbwechsel zu vergleichen.

+0

Möchten Sie eine Zelle markieren, wenn diese ausgewählt ist, oder bestimmte Zellen je nach Status gelb machen? – Moshe

+0

Bitte schreiben Sie Ihre CellForRowAtIndexPath-Funktion. – ryantxr

Antwort

1

In der Haupttabelle Ansicht, tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! Methode können Sie etwas tun:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell! { 

    // Transfer details of selected cell to notes view 
    var selectedCell = details[indexPath.row] 
    detailsTransfer = selectedCell // Transfer detail information 
    detailLocation = indexPath.row // Transfer detail location in array 

    if selectedCell.hasNote { 

     cell.backgroundColor = UIColor.yellowColor() 
    } 
} 

Sie Schleife nicht brauchen, weil die Tabellenansicht bereits Datenquelle für Sie jede Zeile überprüft.

+0

Damit wird der Hintergrund festgelegt, wenn die Zelle ausgewählt ist. – ryantxr

+0

Whoops! Gemeint ist 'cellForRowAtIndexPath'. Vielen Dank. (Fixed.) – Moshe

+0

Ich speichere die Notizen und auch das Array über NSUserDefaults, also wo gebe ich der Zelle das '.hasNote' zu? – ChallengerGuy

Verwandte Themen