Как сделать список из двух столбцов UITableViewController?

Мне нужно представить мое табличное представление со списком из двух столбцов. Я прочитал некоторые связанные посты о создании сетки путем переопределения drawRect ( здесь). Тем не менее, я ищу простой способ создать свою ячейку с IB в nib, затем загрузить ее и вставить две ячейки в каждом ряду. Пример с drawRect не подходит, потому что он включает ручную настройку позиций. Мне просто нужно подтолкнуть эти две ячейки с некоторым автоматическим изменением размера, вот и все. Является ли это возможным?

Я ищу что-то вроде (в cellForRowAtIndexPath):

cell.contentView = emptyUIViewContainer;
[cell.contentView addSubview:FirstColumnUIView];
[cell.contentView addSubview:SecondColumnUIView];

Мне не нужно иметь два отдельных кончика для этих двух столбцов, потому что каждый столбец имеет один и тот же формат только с некоторыми другими данными. Есть идеи?

ОБНОВЛЕНИЕ: Интуитивно я пытаюсь сделать что-то вроде этого:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

  static NSString *CellIdentifier = @"Cell";
  UITableViewCell *cell1 = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  if (cell1 == nil) {
    cell1 = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
  }
  // Configure the first cell.
  cell1.textLabel.text = ...some text

  // Configure the second cell
  UITableViewCell *cell2 = [[UITableViewCell alloc] init];
  cell2.textLabel.text = ...some text

  //set row as container for two cells    
  UITableViewCell *twoColumnRowView = [[UIView alloc] init]; //initWithFrame:CGRectMake(0, 0, 200, 20)];

  cell1.contentView.frame = CGRectMake(0, 0, 100, 20);
  [twoColumnRowView addSubview:cell1];
  cell2.contentView.frame = CGRectMake(100, 0, 100, 20);
  [twoColumnRowView addSubview:cell2];

  return twoColumnRowView; // cell;
}

Это просто сырой прототип, с которым я сейчас играю. Но код завершается с ошибкой во время выполнения с "Завершение работы приложения из-за необработанного исключения" NSInvalidArgumentException ", причина:" -[UIView setTableViewStyle:]: нераспознанный селектор, отправленный экземпляру "

ОБНОВЛЕНИЕ 2. Я изменил код, чтобы выглядеть более практичным. Странно, но после нескольких попыток я запустил приложение без сбоев, но со странным черным фоном во всех ячейках. Вот код:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  static NSString *FirstCellIdentifier = @"FirstCellIdentifier"; 
  static NSString *SecondCellIdentifier = @"SecondCellIdentifier";

  // initialize first cell
  UITableViewCell *cell1 = [tableView dequeueReusableCellWithIdentifier:FirstCellIdentifier];

  if (cell1 == nil) {
    cell1 = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:FirstCellIdentifier] autorelease];
  }

  //initialize second cell
  UITableViewCell *cell2 = [tableView dequeueReusableCellWithIdentifier:SecondCellIdentifier];

  if (cell2 == nil) {
    cell2 = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SecondCellIdentifier] autorelease];
  }

  cell1.textLabel.text = ...data
  cell2.textLabel.text = ...data

  UITableViewCell *twoColumnRowView = [[UITableViewCell alloc] init];

  [twoColumnRowView addSubview:cell1];
  //cell2.contentView.frame = CGRectMake(100, 0, 100, 20);
  [twoColumnRowView addSubview:cell2];

  return twoColumnRowView; // cell;
}

Я не повторно использую twoColumnRowView, но оба других делают.

2 ответа

Решение

Вы не можете (или, по крайней мере, не должны) размещать два табличных представления рядом друг с другом. И, как вы уже знаете, табличное представление имеет только один столбец.

Тем не менее, вы можете поместить столько данных, сколько хотите в каждую ячейку.

Вы можете сделать большую часть этого в Интерфейсном Разработчике. Создайте XIB с UITableViewCell, Перетащите пару UILabelв правильном месте. Вы можете обновить ярлыки, найдя их с помощью viewWithTag: метод, но было бы лучше создать кастом UITableViewCell класс со свойствами, указывающими на каждую метку.

Поскольку таблицы так важны для UIKit, в наборе документации Apple есть много примеров, и есть несколько хороших докладов WWDC. Вы можете скачать видео из iTunes.

Надеюсь, что это поможет вам...

http://www.iphonedevx.com/?p=153

иначе лучший способ - поместить два табличных представления рядом, если им нужно прокрутить независимо.

Надеюсь, что это поможет вам...

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