我有一个UITableView
,其中包含一个UILabel
的单元格。我希望按下单元格时单元格标签文本颜色会发生变化。我该怎么做?
这就是我的尝试:
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
let cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell
let label:UILabel = cell.viewWithTag(1) as UILabel
label.textColor = UIColor(red: 46/255.0, green: 204/255.0, blue: 113/255.0, alpha: 1.0)
cell.reloadInputViews()
}
答案 0 :(得分:3)
UITableViewCell子类并覆盖setSelected。
<div id="tabs-2">
<div class="MT10" ng-init="getPaymentDetailsById()"><!--getPaymentDetailsById()-->
<div class="panel">
<div class="form-group">
<label> Name:</label>
<span class="rightside">
<input type="text" value="" ng-model="singleGatewayDetails.name" >
</span>
</div>
<div class="form-group">
<label> APP :</label>
<span class="rightside">
<input type="text" value="" ng-model="paymentDetails.id" ng-disabled="appId">
</span>
</div>
<div class="form-group">
<label> APP KEY:</label>
<span class="rightside">
<input type="text" value="" ng-model="singleGatewayDetails.appKey" >
</span>
</div>
<div class="form-group">
<label> APP SECRET:</label>
<span class="rightside">
<input type="text" value="" ng-model="singleGatewayDetails.appSecret">
</span>
</div>
</div>
</div>
</div>
答案 1 :(得分:0)
实现didDeselectRowAtIndexPath委托方法。在此方法中,您应该将标签设置回正常颜色。
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
let cell = tableView.cellForRowAtIndexPath(indexPath)
let label: UILabel = cell.viewWithTag(1) as UILabel
label.textColor = UIColor.redColor()
}
override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.cellForRowAtIndexPath(indexPath)
let label: UILabel = cell.viewWithTag(1) as UILabel
label.textColor = UIColor.blackColor()
}
此外,除非您确实需要,否则请删除.reloadInputViews()。这可能会消除textColor的任何更新。
答案 2 :(得分:0)
Swift 3版看起来像:
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
if (selected) {
self.artistLabel.textColor = UIColor.lightGray
} else {
self.artistLabel.textColor = UIColor.black
}
}
只是提到这比使用didSelectRowAtIndexPath更清晰,更好的方法
答案 3 :(得分:0)
我通常在这种情况下使用的是覆盖setHighlighted
子类中的UITableViewCell
:
override func setHighlighted(_ highlighted: Bool, animated: Bool) {
super.setHighlighted(highlighted, animated: animated)
label.textColor = UIColor.redColor()
}
为此,您必须使用自定义表格视图单元格来覆盖特定方法。