Я создаю свои пользовательские ячейки вида аналогичным образом - за исключением того, что я подключаю ячейку через IBOutlet.
Подход [nib objectAt...]
подвержен изменениям позиций элементов в массиве.
Подход UIViewController
хорош - только что попробовал, и он работает достаточно хорошо.
НО ...
Во всех случаях конструктор initWithStyle
НЕ вызывается, поэтому инициализация по умолчанию не производится.
Я читал различные места об использовании initWithCoder
или awakeFromNib
, но нет убедительных доказательств того, что любой из них является правильным.
Помимо явного вызова некоторого метода инициализации в методе cellForRowAtIndexPath
, я пока не нашел ответа на этот вопрос.