2016-09-02 3 views
2

ausgewählt Ich habe ein UITableView innerhalb eines UITableViewCell (Scrolling für die verschachtelte UITableView deaktiviert)UITableView innerhalb UITableViewCell ändert sich die Farbe weiß, wenn

Alles funktioniert gut. Es gibt jedoch ein Problem, wenn ich auf die Zelle klicke. Es wird hervorgehoben, aber das verschachtelte UITableView ändert seine Farbe in Weiß, was nicht gut aussieht.

Gibt es eine Möglichkeit, dies zu ändern? Ich habe die verschachtelten UITableView'sbackgroundView und ihre cells bereits auf transparent gesetzt.

EDIT: Selection ist für die verschachtelten UITableView deaktiviert. Der Abgriff erfolgt auf einer Zelle des äußeren UITableView, wodurch das ganze innere UITableView weiß wird.

EDIT2: Hier sind einige Screenshots vor und während der Hahn

Before the tap During the tap

EDIT3: -Code des ersten UITableView:

Im ViewControler'sviewDidLoad

self.tableView.delegate = self 
    self.tableView.dataSource = self 
    self.tableView.backgroundColor = UIColor.darkBlueColor() 
    self.tableView.registerNib(UINib(nibName: "TimelineDay", bundle: nil), forCellReuseIdentifier: TimelineDayTableViewCell.identifier) 

Im die TimelineDayTableViewCell'sawakeFromNib()

self.tableView.delegate = self 
    self.tableView.dataSource = self 
    self.tableView.backgroundColor = UIColor.darkBlueColor() 
    self.tableView.backgroundView = UIView.clearView() 
    self.selectedBackgroundView = UIView.viewWithBackgroundColor(UIColor.accentColor()) 
    self.tableView.registerNib(UINib(nibName: "EventItemCell", bundle: nil), forCellReuseIdentifier: EventItemTableViewCell.identifier) 

Im EventItemTableViewCell'sawakeFromNib()

self.backgroundView = UIView.clearView() 
    self.selectedBackgroundView = UIView.clearView() 
+1

können Sie Ihren Quellcode posten? – ddb

+0

Es ist meistens im Storyboard aufgebaut. Ich versuche meine Antwort zu bearbeiten, um sie verständlicher zu machen. – ph1lb4

+0

Bitte versuchen Sie meine Antwort ist getan oder nicht? –

Antwort

3

Möglicherweise müssen Sie Ihre Zelle Unterklasse:

class YourTableViewCellClass: UITableViewCell 
{   
    @IBOutlet weak var yourLabel: UILabel! 

    override func setSelected(_ selected: Bool, animated: Bool) { 
     if(selected) { 

      self.contentView.backgroundColor = UIColor.red //or what you want 
      self.yourLabel.textColor = UIColor.green //or what you want 

     } else { 

      self.contentView.backgroundColor = UIColor.white //or what you want 
      self.yourLabel.textColor = UIColor.green //or what you want 
     } 
    }     
} 
+0

Ah, schön! Danke, das hat den Trick gemacht. Ich habe sowieso schon UITableViewCell subclassiert, also war das einfach hinzuzufügen. – ph1lb4

1

mit diesem versuchen, gute Arbeit geleistet:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     var selectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)! 
     cellSelected.contentView.backgroundColor = UIColor.blueColor() } 

    // if tableView is set in attribute inspector with selection to multiple Selection it should work. 

    // Just set it back in deselect 

    override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 
     var cellToDeSelect:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)! 
     cellDeselected.contentView.backgroundColor = UIColor.clearColor() } 
+0

Ich habe diesen Code in der inneren UITableView versucht, die nichts geändert hat, weil die Auswahl im inneren UITableView deaktiviert ist. – ph1lb4

+0

Können Sie Ihren Quellcode veröffentlichen? – Carlo

+0

Gibt es in Ihrem Code UITableViewDelegate? – Carlo

Verwandte Themen