Как сделать список из двух столбцов 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.
Надеюсь, что это поможет вам...
иначе лучший способ - поместить два табличных представления рядом, если им нужно прокрутить независимо.
Надеюсь, что это поможет вам...