Хорошо. Я сделал больше пользовательских UITableViewCells, чем я могу рассчитывать в течение последних трех лет.
Затем наступает iOS 5, и я просто получил проект на своем столе, где мне еще предстоит сделать еще несколько.
Итак, как я это делал, я бы сделал пользовательский XIB, перетащил UITableViewCell на холст, включил мои элементы управления, установил пользовательский класс, выполнил мою привязку... затем загрузите экземпляр ячейки в код перебирать объекты после распаковки XIB.
Сколько раз у меня была одна функция Category, чтобы справиться со всем этим.
Теперь внезапно в iOS 5 он обслуживает большие пустые белые ячейки таблицы каждый раз, когда я создаю пользовательскую ячейку.
Ниже приведены следующие характеристики пользовательских ячеек, которые вставляются в таблицу
1) Покажите полностью безумный белый, кроме элементов управления UITableViewCell "по умолчанию" (textLabel и т.д., будут заполняться и отображаться, когда я устанавливаю для них текст).
2) isKindOfClass (MyCustomCellClass) сообщает true
3) Сетчатые методы в пользовательском классе ячеек функционируют, указатели объектов для заданных значений И пользовательские UILabels и все такие отчеты как не-nil, что означает, что ячейка фактически создается и правильно создается из XIB
4) По какой-то причине вы увидите безусловные элементы управления, такие как UIStepper. Так что да, если я поместил шагомер в свою пользовательскую ячейку, он покажет, но метки и изображения не будут.
Насколько я могу судить, что-то скрывает представление контента по умолчанию, или иначе пользовательские элементы управления, которые я создаю, больше не присваиваются содержимому элемента в ячейке больше (как это было раньше), а вместо этого просто будучи выброшенным в космическое пространство.
Например, в iOS 4 XIB я использовал это при создании пользовательской ячейки (выведенной из документации Apple iOS 5):
Но с этого момента это то, что я вижу, когда делаю то же самое в iOS 5 XIB
Итак, обратите внимание, что он явно не показывает эту маленькую точку с пунктирной линией содержимого.
Я действительно исчерпал все свои диагностические ноу-хау по этой проблеме. Я попытался вручную перекачать все пользовательские метки непосредственно в представление содержимого во время выполнения, но даже это не работает.
Я ищу любые идеи.
изменить
Код для загрузки XIB
if (cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"XCCodeViewCell" owner:self options:nil];
cell = codeCell;
self.codeCell = nil;
}
В настоящее время это то, что нужно после упрощения на основе новых рекомендаций iOS 5 от Apple. XIB имеет своего владельца, правильно установленного в класс "self", а codeCell правильно связан с ячейкой с правильным классом и идентификатором.