Я пытаюсь реализовать концепцию, показанную в примере проекта this. Моя цель - отделить класс контроллера вида и протокол данных. Вместо реализации методов DATASOURCE просмотра таблицы в моей таблице класса контроллера представления, я пытаюсь поставить его в своем классе, и на мой взгляд, контроллер, я только называю этот метод, чтобы настроить мой вид таблицы:Свойства ячейки таблицы вида остаются nil
- (void)setupTableView
{
void (^configureCell)(JVRTodoItemCell *, JVRTodoItem *) = ^(JVRTodoItemCell *cell, JVRTodoItem *todoItem)
{
[cell configureForTodoItem:todoItem];
};
NSArray *todoItems = currentUser.todoItems;
self.todoArrayDataSource = [[JVRArrayDataSource alloc] initWithItems:todoItems withCellIdentifier:TodoCellIdentifier withConfigureCellBlock:configureCell];
self.tableView.dataSource = self.todoArrayDataSource;
[self.tableView registerClass:[JVRTodoItemCell class] forCellReuseIdentifier:TodoCellIdentifier];
}
источник данных разделяется на свой собственный класс:
@interface JVRArrayDataSource()
@property (copy,nonatomic) NSArray *items;
@property (copy,nonatomic) NSString *cellIdentifier;
@property (copy,nonatomic) void (^configureCellBlock)(id item, id cell);
@end
@implementation JVRArrayDataSource
...
#pragma mark - UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.items.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:self.cellIdentifier forIndexPath:indexPath];
id item = [self itemAtIndexPath:indexPath];
self.configureCellBlock(cell,item);
return cell;
}
интересное, что создание ячейки на основе идентификатора (с помощью dequeueReusableCellWithIdentifier: forIndexPath :), кажется, чтобы быть успешным, потому что правильная клетка получает выделяется, но его ярлыки остаются ноль. Я пытаюсь настройки моей камеры, используя следующий метод, но значения остаются нулевыми (aTodoItem имеет действительные свойства):
- (void)configureForTodoItem:(JVRTodoItem *)aTodoItem
{
self.todoItemTitle.text = aTodoItem.title;
self.todoItemPriority.text = [NSString stringWithFormat:@"%d", aTodoItem.priority];
}
Я пытаюсь выяснить, что может быть здесь отсутствую, но до сих пор, я гавань» t удалось исправить проблему, и я начинаю терять надежду. Любая помощь будет оценена по достоинству.
ОБНОВЛЕНИЕ: Чтобы было ясно, на этом снимке проблема осталась.
Кажется, что клетки получают создан, но его метки нет.
Я не вижу, где вы звоните 'configureForTodoItem:'. Более того, я понятия не имею, что вы пытаетесь сделать с двумя строками между созданием 'cell' и return' cell'. – nhgrif
configureForTodoItem: вызывается из контроллера вида (в блоке configureCell). После создания ячейки я просматриваю запись в соответствующей строке и вызываю метод configure, чтобы установить метки ячеек для свойств этой записи. –
И где называется 'setupTableView'? Я не понимаю ни малейшего, что пытается сделать этот код. Что вы в целом пытаетесь достичь? – nhgrif