Как сделать список из двух столбцов UITableViewController? - PullRequest
0 голосов
/ 12 сентября 2011

Мне нужно представить мое табличное представление со списком из двух столбцов.Я прочитал некоторые связанные посты о создании сетки путем переопределения drawRect ( здесь ).Тем не менее, я ищу простой способ создать свою ячейку с IB в кончике, затем загрузить ее и вставить две ячейки в каждом ряду.Пример с 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 ]

1 голос
/ 12 сентября 2011

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

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

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

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

0 голосов
/ 12 сентября 2011

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

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

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

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

...