我的subviews
中有4 cell
,imageView
照片始终显示在每个cell
中
始终在显示名称imageview
时显示带有图标的label
desc label
有时会出现
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.text = ""
if cell.contentView.viewWithTag(1000) == nil {
let name = UILabel(frame: CGRect(x: cell.frame.origin.x + cell.frame.width / 3.3, y: cell.frame.origin.y + cell.frame.height / 4, width: 200, height: cell.frame.height / 5))
name.textAlignment = NSTextAlignment.Left
name.text = lines[indexPath.row].name
name.font = UIFont(name: "OpenSans-Bold", size: cell.frame.height / 6)
name.textColor = UIColor(red: 247/255.0, green: 215/255.0, blue: 129/255.0, alpha: 1)
name.tag = 1000
cell.contentView.addSubview(name)
}
let name = cell.contentView.viewWithTag(1000)
if cell.contentView.viewWithTag(1001) == nil {
let desc = UILabel(frame: CGRect(x: cell.frame.origin.x + cell.frame.width / 3.3, y: cell.frame.origin.y + cell.frame.height / 4 + name!.frame.height, width: cell.frame.width / 2, height: 0))
desc.textAlignment = NSTextAlignment.Left
if let age = lines[indexPath.row].age{
desc.text = String(age) + NSLocalizedString("radarTable.age", comment: "age")
print(lines[indexPath.row].isMale)
if let city = lines[indexPath.row].residence{
desc.text = desc.text! + DataService.instance.getResidenceMutation(city, sender: self)
}
}
desc.font = UIFont(name: "OpenSans", size: cell.frame.height / 9)
desc.textColor = UIColor.whiteColor()
desc.numberOfLines = 2
desc.lineBreakMode = NSLineBreakMode.ByWordWrapping
desc.sizeToFit()
cell.contentView.addSubview(desc)
}
if cell.contentView.viewWithTag(1002) == nil{
let photo = UIImageView(frame: CGRect(x: 0, y: 0, width: cell.frame.height/1.6, height: cell.frame.height/1.6))
photo.image = lines[indexPath.row].photo
photo.center = CGPoint(x: (cell.frame.height/2), y: (cell.frame.height / 2))
photo.contentMode = UIViewContentMode.ScaleAspectFill
photo.clipsToBounds=true
photo.layer.cornerRadius = photo.frame.height/2
photo.tag = 1002
cell.contentView.addSubview(photo)
}
if cell.contentView.viewWithTag(1003) == nil {
let image = UIImage(named: "profileIcon")
let backgroundView = UIImageView(frame: CGRect(x: cell.frame.origin.x + cell.frame.width / 3.3 - cell.frame.height / 7,y: cell.frame.origin.y + cell.frame.height / 4 + cell.frame.height / 25, width: cell.frame.height / 10, height: cell.frame.height / 10))
backgroundView.image = image
backgroundView.tag = 1003
backgroundView.center = (name?.center)!
backgroundView.frame.origin.x = cell.frame.origin.x + cell.frame.width / 3.3 - cell.frame.height / 7
cell.contentView.addSubview(backgroundView)
}
return cell
}
这就是它的样子 tableview
答案 0 :(得分:0)
你需要改变这个条件:
if cell.contentView.viewWithTag(1001) == nil { /* all above code*/ }
这样的事情:
if cell.contentView.viewWithTag(1001) == nil { Here, label does not exist, so you need to create a label and add subvieew let desc = UILabel(frame: CGRect(x: cell.frame.origin.x + cell.frame.width / 3.3, y: cell.frame.origin.y + cell.frame.height / 4 + name!.frame.height, width: cell.frame.width / 2, height: 0)) desc.textAlignment = NSTextAlignment.Left if let age = lines[indexPath.row].age{ desc.text = String(age) + NSLocalizedString("radarTable.age", comment: "age") print(lines[indexPath.row].isMale) if let city = lines[indexPath.row].residence{ desc.text = desc.text! + DataService.instance.getResidenceMutation(city, sender: self) } } desc.font = UIFont(name: "OpenSans", size: cell.frame.height / 9) desc.textColor = UIColor.whiteColor() desc.numberOfLines = 2 desc.lineBreakMode = NSLineBreakMode.ByWordWrapping desc.sizeToFit() cell.contentView.addSubview(desc) } else //Since contentView contains the label this time, just set the label value here { let desc:UILabel = cell.contentView.viewWithTag(1001) as! UILabel if let age = lines[indexPath.row].age{ desc.text = String(age) + NSLocalizedString("radarTable.age", comment: "age") print(lines[indexPath.row].isMale) if let city = lines[indexPath.row].residence{ desc.text = desc.text! + DataService.instance.getResidenceMutation(city, sender: self) } } }
请原谅格式化。 但我相信你有了这个主意。
答案 1 :(得分:0)
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.text = ""
if cell.contentView.viewWithTag(1000+indexPath.row) == nil {
let name = UILabel(frame: CGRect(x: cell.frame.origin.x + cell.frame.width / 3.3, y: cell.frame.origin.y + cell.frame.height / 4, width: 200, height: cell.frame.height / 5))
name.textAlignment = NSTextAlignment.Left
name.text = lines[indexPath.row].name
name.font = UIFont(name: "OpenSans-Bold", size: cell.frame.height / 6)
name.textColor = UIColor(red: 247/255.0, green: 215/255.0, blue: 129/255.0, alpha: 1)
name.tag = 1000+indexPath.row
cell.contentView.addSubview(name)
}
let name = cell.contentView.viewWithTag(1000+indexPath.row)
if cell.contentView.viewWithTag(2000+indexPath.row) == nil {
let desc = UILabel(frame: CGRect(x: cell.frame.origin.x + cell.frame.width / 3.3, y: cell.frame.origin.y + cell.frame.height / 4 + name!.frame.height, width: cell.frame.width / 2, height: 0))
desc.textAlignment = NSTextAlignment.Left
if let age = lines[indexPath.row].age{
desc.text = String(age) + NSLocalizedString("radarTable.age", comment: "age")
print(lines[indexPath.row].isMale)
if let city = lines[indexPath.row].residence{
desc.text = desc.text! + DataService.instance.getResidenceMutation(city, sender: self)
}
}
desc.font = UIFont(name: "OpenSans", size: cell.frame.height / 9)
desc.textColor = UIColor.whiteColor()
desc.numberOfLines = 2
desc.lineBreakMode = NSLineBreakMode.ByWordWrapping
desc.sizeToFit()
cell.contentView.addSubview(desc)
}
if cell.contentView.viewWithTag(3000+indexPath.row) == nil{
let photo = UIImageView(frame: CGRect(x: 0, y: 0, width: cell.frame.height/1.6, height: cell.frame.height/1.6))
photo.image = lines[indexPath.row].photo
photo.center = CGPoint(x: (cell.frame.height/2), y: (cell.frame.height / 2))
photo.contentMode = UIViewContentMode.ScaleAspectFill
photo.clipsToBounds=true
photo.layer.cornerRadius = photo.frame.height/2
photo.tag = 3000+indexPath.row
cell.contentView.addSubview(photo)
}
if cell.contentView.viewWithTag(4000+indexPath.row) == nil {
let image = UIImage(named: "profileIcon")
let backgroundView = UIImageView(frame: CGRect(x: cell.frame.origin.x + cell.frame.width / 3.3 - cell.frame.height / 7,y: cell.frame.origin.y + cell.frame.height / 4 + cell.frame.height / 25, width: cell.frame.height / 10, height: cell.frame.height / 10))
backgroundView.image = image
backgroundView.tag = 4000+indexPath.row
backgroundView.center = (name?.center)!
backgroundView.frame.origin.x = cell.frame.origin.x + cell.frame.width / 3.3 - cell.frame.height / 7
cell.contentView.addSubview(backgroundView)
}
return cell
}