Как и многие другие, я хочу реализовать собственную строку в Eureka.
Так что я следил за учебным пособием и даже просмотрел некоторые примеры, предоставленные сообществом Eureka.
Это мой код:
open class EditorTextCell: Cell<Field>, CellType {
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var questionField: UITextField!
// TODO
}
Ряд:
public final class EditorTextRow: Row<EditorTextCell>, RowType {
required public init(tag: String?) {
super.init(tag: tag)
cellProvider = CellProvider<EditorTextCell>(nibName: "EditorTextCell")
}
}
И моя структура данных так же проста, как:
public class Field: Object {
dynamic var question = ""
dynamic var mandatory = false
}
Насколько я понимаю, мне нужна структура данных, которая содержит данные, которые моя пользовательская строка будет хранить/генерировать после взаимодействия с пользователем. Эта пользовательская структура данных в моем случае является объектом Realm, поэтому я подумал, почему бы не использовать ее повторно? После этого пользовательская структура данных должна быть передана в Cell<MyDataStructure>
моей пользовательской ячейки, которую я определяю. Пользовательская строка просто загружает мой перо и объявляет, для какой ячейки использовать его с Row<MyCustomCell>
. Это все. Правильный?
Я получаю сообщение об ошибке «Не удается преобразовать значение типа UITableViewCell в ожидаемый тип аргумента BaseRow» в строке, где я пытаюсь создать экземпляр своей пользовательской строки, например form.last! <<< EditorTextCell()
.
Я прочитал официальную документацию, где написано: Custom rows need to subclass Row<CellType> and conform to RowType protocol. Custom cells need to subclass Cell<ValueType> and conform to CellType protocol.
- что я и делаю. Я также нашел ссылку на stackoverflow, которая дает некоторые советы, которым я уже следую. И я посмотрел на это, это официальный пример. Я в основном просто записал, что они сделали, и все же это не работает.
Почему?
Единственная разница, которую я вижу, заключается в том, что они пишут отдельный тип подчеркивания для Row<MyCustomCell>
и делают там некоторые вещи, которые я не понимаю. Я не понимаю, зачем это нужно, если официальная документация на их github говорит, что этого достаточно, чтобы создать подкласс и принять Row<MyCustomCell>
и RowType
.