UPDATE с ответомпользовательских UITableViewCell без раскадровки не отображается
Я могу использовать TextLabel свойство клетки, я могу установить атрибуты для моих пользовательских меток и напечатать значение (с печатью после переключения), но я не могу получить что-нибудь обычное для отображения, а не цвет фона, а не значение, а не что-то.
Обратите внимание, что я не использую раскадровку вообще для этого, и два класса находятся внутри одного и того же файла (с использованием двух отдельных файлов, ничего не меняет, так что это не связано с моей проблемой).
Если у кого-то есть представление о том, что проблема здесь, и я мог бы указать мне в правильном направлении, было бы здорово.
class DayPickerTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
self.tableView.registerClass(DayPickerTableViewCell.self, forCellReuseIdentifier: "cell")
self.tableView.scrollEnabled = false
self.tableView.bounces = false
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 44
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 8
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! DayPickerTableViewCell
cell.textLabel!.text = "test"
switch indexPath.row {
case 0:
cell.dayModeLabel.text = "DAY"
break
case 1:
cell.dayModeLabel.text = "WEEK"
break
case 2:
cell.dayModeLabel.text = "WORK WEEK"
break
case 3:
cell.dayModeLabel.text = "WEEK-END"
break
case 4:
cell.dayModeLabel.text = "MONTH"
break
case 5:
cell.dayModeLabel.text = "YEAR"
break
case 6:
cell.dayModeLabel.text = "ALL HISTORY"
break
case 7:
cell.dayModeLabel.text = "CUSTOM"
break
default: break
}
print(cell.dayModeLabel.text)
return cell
}
}
class DayPickerTableViewCell: UITableViewCell {
var imgDayPicker = UIImageView()
var dayModeLabel = UILabel()
var dayDisplayLabel = UILabel()
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
imgDayPicker.translatesAutoresizingMaskIntoConstraints = false
dayModeLabel.translatesAutoresizingMaskIntoConstraints = false
dayDisplayLabel.translatesAutoresizingMaskIntoConstraints = false
imgDayPicker.backgroundColor = UIColor.redColor()
dayModeLabel.backgroundColor = UIColor.blackColor()
dayDisplayLabel.backgroundColor = UIColor.greenColor()
self.contentView.addSubview(imgDayPicker)
self.contentView.addSubview(dayModeLabel)
self.contentView.addSubview(dayDisplayLabel)
let viewsDict = [
"image" : imgDayPicker,
"mode" : dayModeLabel,
"day" : dayDisplayLabel,
]
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[image(50)][mode(==day)]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: viewsDict))
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
для того, чтобы код, который работает, замените просыпаются от метода кончика пера с этим:
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
imgDayPicker.translatesAutoresizingMaskIntoConstraints = false
dayModeLabel.translatesAutoresizingMaskIntoConstraints = false
dayDisplayLabel.translatesAutoresizingMaskIntoConstraints = false
imgDayPicker.backgroundColor = UIColor.redColor()
dayModeLabel.backgroundColor = UIColor.blackColor()
dayDisplayLabel.backgroundColor = UIColor.greenColor()
self.contentView.addSubview(imgDayPicker)
self.contentView.addSubview(dayModeLabel)
self.contentView.addSubview(dayDisplayLabel)
let viewsDict = [
"image" : imgDayPicker,
"mode" : dayModeLabel,
"day" : dayDisplayLabel,
]
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[image(50)][mode(==day)]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: viewsDict))
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
Вы получаете ячейки обратно в 'tableView: cellForRowAtIndexPath:'? – AdamPro13
Возможно, 'awakeFromNib' не вызывается. поместите его в журнал или попробуйте переопределить initWithCoder – Shubhank
Да, я вернул ячейку обратно, как будто я сказал, что могу печатать материал, менять цвета, но я ничего не вижу из пользовательской части ячейки. –