2015-11-25 4 views
1

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") 
} 
+0

Вы получаете ячейки обратно в 'tableView: cellForRowAtIndexPath:'? – AdamPro13

+0

Возможно, 'awakeFromNib' не вызывается. поместите его в журнал или попробуйте переопределить initWithCoder – Shubhank

+0

Да, я вернул ячейку обратно, как будто я сказал, что могу печатать материал, менять цвета, но я ничего не вижу из пользовательской части ячейки. –

ответ

1

Раскадровка/XIB погрузчик посылает awakeFromNib. Поскольку вы не используете раскадровку или xib, ничто не отправляет awakeFromNib в ячейку, поэтому код никогда не запускается.

Вы можете просто позвонить cell.awakeFromNib(), хотя это будет вводить в заблуждение. Я бы переместил код в init.

Вам также нужно больше ограничений для подзонов.

+0

Спасибо за лидерство, wasn ' t знал, что awakefromnib ожидал раскадровки ... Правильное кодирование лучше, чем странные патчи, попытаемся реализовать init. –

+0

Работаю как шарм, спасибо, и действительно кажется, что мне понадобится еще несколько ограничений. –