Ответ 1
Я решил эту проблему, переопределив следующую функцию, установив высоту ячеек вручную:
override func tableView(tableView:UITableView!, heightForRowAtIndexPath indexPath:NSIndexPath)->CGFloat
{
return 44
}
Я искал много в Интернете для решения этой проблемы, но я не могу понять это. Я пытаюсь создать пользовательскую ячейку в виде таблицы.
Я создал класс CustomCell.swift для настройки ярлыков, которые я хочу в своей пользовательской ячейке, создал его через раскадровку (первую ячейку прототипа в виде таблицы) и связал ее с идентификатором метода cellForRowAtIndexPath
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cellIdentifier = "huisCell"
var cell: CustomCell? = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? CustomCell
if cell == nil {
cell = CustomCell(style: UITableViewCellStyle.Value1, reuseIdentifier: cellIdentifier)
}
cell!.huisAdresLabel.text = "123"
cell!.huisDetailLabel.text = "456"
return cell
}
Мой код CustomCell.swift выглядит следующим образом:
class CustomCell: UITableViewCell {
@IBOutlet var huisAdresLabel: UILabel
@IBOutlet var huisDetailLabel: UILabel
}
Это очень просто, но я просто хочу, чтобы он работал, потому что я могу расширить ячейку с большим количеством атрибутов и лучше ее стилить.
Изображения с помощью DropBox, потому что мне нужно 10 репутации, чтобы правильно документировать мою проблему:)
https://www.dropbox.com/sh/5v9jb6cqp80knze/AAD5-yPR8-KoStQddkqKIbcUa
Я надеюсь, что кто-то может объяснить, что я делаю неправильно.
Edit:
Чтобы прояснить некоторые вещи, прежде чем попытаться создать пользовательскую ячейку, я получил ее работу с базовыми ячейками, с одной меткой слева. Но когда я попытался создать табличное представление и создал пользовательскую ячейку, это не сработает.
Кроме того, при тестировании различных решений я столкнулся с проблемой, что две метки в CustomCell.swift равны нулю. Даже когда я создал пользовательский init и сделал как
self.huisAdresLabel = UILabel()
это было все равно ноль. в коде, который я вам показал, он печатает следующее:
<UILabel: 0xb2aadc0; frame = (0 -21; 42 21); text = '123'; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <_UILabelLayer: 0xb2aa3a0>>
Я решил эту проблему, переопределив следующую функцию, установив высоту ячеек вручную:
override func tableView(tableView:UITableView!, heightForRowAtIndexPath indexPath:NSIndexPath)->CGFloat
{
return 44
}
Попробуйте использовать файл xib и добавьте свой собственный класс ячеек в "Table View Cell", которую вы создаете в своем xib файле.
(Убедитесь, что вы подключили его к розеткам в своем классе сотовой ячейки;)
Эта ссылка может помочь. http://www.weheartswift.com/swifting-around/
У меня была та же проблема, но после отключения "Использовать автоматический макет" в "Файловом инспекторе" это сработало! и отображаются пользовательские ячейки.
Примечание. Я создал пользовательские ячейки в Builder, а не в коде. Использование Xcode beta 3
Работа с ячейками пользовательских таблиц в Xcode 6 Beta-4 IB, я обнаружил, что все они отображаются поверх друг друга и моей нестандартной ячейки.
Я исправил свою проблему...
Быстрое обходное решение: отключить Использовать классы классов, но до сих пор не знаю, есть ли это ошибка или функция:-) требуется больше исследований или чтения человеком.