xcode storyboard вложенный массив таблиц pass

Я взял пример сценария приложения, похожего на импульс из Интернета, который состоит из файлов XIB, и я структурировал его, чтобы перейти в раскадровку, чтобы использовать горизонтальную прокрутку таблицы.

По какой-то причине "cell = tableViewCell" в tableView.m продолжает работать со мной из-за ошибки подтверждения UITableView dataSource должен вернуть ячейку из tableView:cellForRowAtIndexPath

Если я закомментирую "cell = tableViewCell", программа будет работать без сбоев, но я не передаю информацию в tableViewCell.

Есть ли простое решение, которое я просто не вижу?

tableView.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   static NSString *CellIdentifier = @"Cell";
   TableViewCell *cell = (TableViewCell*)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];


       CGAffineTransform rotateTable = CGAffineTransformMakeRotation(-M_PI_2);
       tableViewCell.horizontalTableView.transform = rotateTable;
       tableViewCell.horizontalTableView.frame = CGRectMake(0, 0, tableViewCell.horizontalTableView.frame.size.width, tableViewCell.horizontalTableView.frame.size.height);

       tableViewCell.contentArray = [arrays objectAtIndex:indexPath.section];

       tableViewCell.horizontalTableView.allowsSelection = YES;
       cell = tableViewCell;

     return cell;
 } 

tableViewCell.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   static NSString *CellIdentifier = @"Cell";
   UITableViewCell *cell = [self.horizontalTableView dequeueReusableCellWithIdentifier:CellIdentifier];

   for (UIImageView *view in cell.subviews) {
       [view removeFromSuperview];
   }

   UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
   imageView.image = [contentArray objectAtIndex:indexPath.row]];
   imageView.contentMode = UIViewContentModeCenter;

   CGAffineTransform rotateImage = CGAffineTransformMakeRotation(M_PI_2);
   imageView.transform = rotateImage;

   [cell addSubview:imageView];

   return cell;
}

1 ответ

Вы должны размещать и инициировать новую ячейку таблицы только в том случае, если dequeue возвращает nil.

if (!cell) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] ;
}

Пример, который вы используете http://iosstuff.wordpress.com/2011/06/29/creating-pulse-style-scrolling-horizontally-scrolling-uitableview-as-a-subview-of-uitableviewcell/, действительно старый и для iOS 4. В прошлом году в iOS 6 Apple добавила Collection Views, чтобы делать подобные вещи.

Вы должны проверить:

WWW2012 Сессия 205. Представление коллекций: https://developer.apple.com/videos/wwdc/2012/?id=205

Лекция 7 Представления коллекции https://itunes.apple.com/us/course/coding-together-developing/id593208016

Другие вопросы по тегам