У меня есть UITableViewController
в Раскадровке в моем проекте iOS. У меня есть специальный TableViewCell MessageCell
с UIView
внутри определенного класса.Ошибка в iOS с UITableViewCells?
Когда я называю tableView.dequeueReusableCellWithIdentifier:
я получаю UITableViewCell
только с этим подвидом дерева:
<UITableViewCell: 0x16da5e90; frame = (0 0; 0 0); layer = <CALayer: 0x16da5120>>
<UITableViewCellContentView: 0x16da6210; frame = (0 0; 0 0); clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x16da5510>; layer = <CALayer: 0x16da6280>>
<_UITableViewCellSeparatorView: 0x16da62b0; frame = (0 -1; 15 1); layer = <CALayer: 0x16da52d0>>
Но когда я называю tableView.dequeueReusableCellWithIdentifier:forIndexPath
, я получаю это подвид дерева:
<UITableViewCell: 0x146f3a90; frame = (0 148.93; 320 54.93); autoresize = W; layer = <CALayer: 0x146f2ff0>>
<UITableViewCellContentView: 0x146f3020; frame = (0 0; 320 54.43); opaque = NO; gestureRecognizers = <NSArray: 0x146f3e90>; layer = <CALayer: 0x146f3180>>
<Heaven_Help.MessageView: 0x146f3f70; frame = (0 0; 320 568); autoresize = W+H; tag = 99; layer = <CALayer: 0x146f4af0>>
<UIImageView: 0x146f4010; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0x146f4090>>
<UILabel: 0x146f40c0; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x146f4180>>
<UILabel: 0x146f42d0; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x146f4390>>
<_UITableViewCellSeparatorView: 0x146f31b0; frame = (0 -1; 15 1); layer = <CALayer: 0x146f3c20>>
<_UITableViewCellSeparatorView: 0x146f5170; frame = (0 -0.5; 16 0.5); layer = <CALayer: 0x146c1f40>>
UIImageview
и 2 UILabels
прибудут добавлен в мой инициализатор MessageView
.
Кто может сказать мне, что я не получаю?
В соответствии с просьбой: мой код из tableView:cellForRowAtIndexPath:
:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("MessageCell", forIndexPath: indexPath) as UITableViewCell
(cell.viewWithTag(99) as MessageView).setMessage(conversation[indexPath.row])
return cell
}
Я ожидаю 'UITableViewCell', но я должен получить тот, который содержит пользовательский' UIView', и я этого не делаю. Я не понимаю, что происходит, но я буду использовать 'dequeueReusableCellWithIdentifier: forIndexPath:' отныне. – vrwim
Если вы обновите свой вопрос своим кодом из 'tableView: cellForRowAtIndexPath:' Я мог бы расширить свой ответ, чтобы объяснить. –
То, что я всегда делал, было в 'tableView: cellForRowAtIndexPath' просто вызывает' [tableView dequeueReusableCellWithIdentifier: @ "MessageCell"] ', и в моей раскадровке создаются прототипы ячеек, которые мне нужны. Я никогда не нуждался в 'initWithStyle: reuseIdentifier', поскольку я сделал ссылку в своем раскадровке. В этом случае у меня даже нет пользовательского 'UITableViewCell', но только прототип, который содержит пользовательский' UIView', который мне нужен. Поэтому я не думаю, что добавление этого кода поможет, но я добавил его в любом случае. – vrwim