如何在UITableView中显示多个列?

时间:2010-05-18 09:15:50

标签: iphone uitableview

我想在UITableView中显示多个列。

例如:

TableView

   FName        LName    Age

   -----        -----    ---

   Abby         Michale   34   

6 个答案:

答案 0 :(得分:19)

我认为这样做的正确方法是UICollectionView。从UITableView开始,最后由于在尝试实现左右和上下滚动时的意外行为而失败。

请查看这篇精彩帖子,了解完整的最新解决方案: http://www.brightec.co.uk/blog/uicollectionview-using-horizontal-and-vertical-scrolling-sticky-rows-and-columns

结果将如下:

enter image description here

答案 1 :(得分:12)

您可以在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 :(得分:3)

我创建了UIGridView。我相信你的问题可以用同样的技术解决。

您可以了解UIGridView的源代码。代码非常简短。

答案 3 :(得分:0)

创建一个自定义UIView子类,其中包含三个UILabel元素作为子视图。然后将单元格的contentView属性设置为此自定义视图。

答案 4 :(得分:0)

将三个标签作为子视图添加到uitableview单元格的内容中。然后为其分配apprrpriate值 例如:

- (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=[[UIImageView 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;
 }

答案 5 :(得分:0)

参加聚会的时间已晚,但我们已经开放了我们的全功能桌面组件:

https://github.com/flexicious/iOSDataGrid

一些截图:

http://www.ioscomponents.com/Home/IOSDataGrid

随意使用!