Как отобразить несколько столбцов в UITableView?
Я хочу отображать несколько столбцов в UITableView.
Пример:
TableView
FName LName Age
----- ----- ---
Abby Michale 34
Ответы
Ответ 1
Вы можете определить пользовательскую ячейку в IB, которая будет содержать 3 метки и в функции:
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *DetailCellIdentifier = @"DetailCell";
UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:DetailCellIdentifier];
if (cell == nil) {
NSArray *cellObjects = [[NSBundle mainBundle] loadNibNamed:@"DetailCell" owner:self options:nil];
cell = (UITableViewCell*) [cellObjects objectAtIndex:0];
}
// setup your cell
}
когда вы определяете ячейку в IB, каждый ярлык тег, поэтому, когда вам нужно поместить туда текст, вы можете получить его по тегу следующим образом:
label = (UILabel *)[cell viewWithTag:NAME_TAG];
label.text = myObject.name;
и повторите это с помощью других 2 меток. Тег - уникальный номер.
Поместите этот код вместо этого//настройте свой комментарий ячейки
Ответ 2
Я думаю, что правильный способ сделать это - UICollectionView. Началось с UITableView и, наконец, не удалось в какой-то момент из-за неожиданного поведения при попытке реализовать прокрутку как влево-вправо, так и вверх-вниз.
Пожалуйста, проверьте это замечательное сообщение для полного и актуального решения:
http://www.brightec.co.uk/blog/uicollectionview-using-horizontal-and-vertical-scrolling-sticky-rows-and-columns
Результат будет таким:
![enter image description here]()
Ответ 3
Я создал UIGridView. Я считаю, что ваша проблема может быть решена с использованием той же техники.
Вы можете узнать исходный код UIGridView. Код действительно короткий.
Ответ 4
Создайте пользовательский подкласс UIView
, содержащий, скажем, три элемента UILabel
в качестве подзонов. Затем установите свойство cell contentView
в это настраиваемое представление.
Ответ 5
добавьте три метки в качестве подвидов в содержимое ячейки uitableview. Затем присвойте ему соответствующие значения, например:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
//frame should be set accordingly(means should be framed accordingly).
UILabel *l1=[[UILabel alloc]initWithFrame:CGRectMake(5, 5, 100,100)];
UILabel *l2=[[UILabel alloc]initWithFrame:CGRectMake(110,10,100,80)];
UILabel *l3=[[UILabel alloc]initWithFrame:CGRectMake(115,60,100,50)];
[cell.contentView addSubview:l1];
[cell.contentView addSubview:l2];
[cell.contentView addSubview:l3];
return cell;
}
Ответ 6
Бит опоздал на вечеринку, но мы открыли наш полнофункциональный компонент таблицы:
https://github.com/flexicious/iOSDataGrid
Некоторые скриншоты:
http://www.ioscomponents.com/Home/IOSDataGrid
Не стесняйтесь использовать!