【发布时间】:2017-01-04 03:42:06
【问题描述】:
我有一个 TableView,该表是从一个数组中填充的。该单元格的类型为 TableViewCell.xib。我想更改单元格中标签的颜色。
这是我的 TableViewController
struct cell_data {
let label1: String!
}
class TableViewController: UITableViewController {
let cellDataArray = [cell_data]([cell_data(label1: "This text is for label 1")])
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return cellDataArray.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = Bundle.main.loadNibNamed("TableViewCell", owner: self, options: nil)?.first as! TableViewCell
cell.label_1.text = cellDataArray[indexPath.row].label1
cell.selectionStyle = .none
let whiteRoundedView : UIView = UIView(frame: CGRect(x:10, y:5, width: self.view.frame.size.width - 20, height: cell.frame.size.height - 7))
whiteRoundedView.layer.backgroundColor = UIColor.green.cgColor
whiteRoundedView.layer.masksToBounds = false
whiteRoundedView.layer.shadowOffset = CGSize(width: -1, height: 1)
whiteRoundedView.layer.shadowOpacity = 0.3
cell.contentView.addSubview(whiteRoundedView)
cell.contentView.sendSubview(toBack: whiteRoundedView)
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
}
override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
}
}
我想要做的就是在我选择一行时改变单元格标签的颜色而不影响单元格内的 UIView。也就是说,一旦我改变了高度当我选择一行时,我尝试重新加载 UIView,但重新加载单元格会将 UIView 的高度设置为原始设置。
一旦我设置了标签的颜色,我想在取消选择行时将其设置回原来的颜色。
我希望我说得足够清楚。提前致谢。
【问题讨论】:
-
你不能在 tableView:didSelectRowAt: 中将标签更改为你想要的颜色并在 tableView:didDeselectRowAt: 中重置它吗?
-
@ubiAle 否。当我更改 didSelectRowAt 中的标签时,我需要重新加载该行,这意味着它还会重新加载 UIView,并且在我选择时我会丢失对其所做的所有更改。跨度>
-
为什么需要重新加载行?
-
@ubiAle 我还能如何更新标签本身?
标签: ios swift uitableview uiview