iOS Tableview 中的多列

Posted

技术标签:

【中文标题】iOS Tableview 中的多列【英文标题】:Multiple columns in iOS Tableview 【发布时间】:2010-07-15 05:22:35 【问题描述】:

如何在tableview的行中创建多列?

【问题讨论】:

ios Multiple Columns in UITableView的可能重复 【参考方案1】:

UITableView 并不是真正为多列设计的。但是您可以通过创建自定义 UITableCell 类来模拟列。在 Interface Builder 中构建您的自定义单元格,为每一列添加元素。给每个元素一个标签,以便您可以在控制器中引用它。

为您的控制器提供一个插座,以便从您的笔尖加载电池:

@property(nonatomic,retain)IBOutlet UITableViewCell *myCell;

然后,在您的表视图委托的 cellForRowAtIndexPath 方法中,按标签分配这些值。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
  static NSString *cellIdentifier = @"MyCell";

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
  if (cell == nil) 
    // load cell from nib to controller's IBOutlet
    [[NSBundle mainBundle] loadNibNamed:@"MyTableCellView" owner:self options:nil];
    // assign IBOutlet to cell
    cell = myCell;
    self.myCell = nil;
  

  id modelObject = [myModel objectAtIndex:[indexPath.row]];

  UILabel *label;
  label = (UILabel *)[cell viewWithTag:1];
  label.text = [modelObject firstField];

  label = (UILabel *)[cell viewWithTag:2];
  label.text = [modelObject secondField];

  label = (UILabel *)[cell viewWithTag:3];
  label.text = [modelObject thirdField];

  return cell;

【讨论】:

感谢您的宝贵回复。但我需要像带有标题和记录的矩阵表视图一样的 DataGrid.. 也许我不明白您在寻找什么,但您可以轻松地使用这种方法来创建看起来像 Excel 表格的东西。您可以为标题的部分标题添加视图。如果您正在寻找一种简单的解决方案,可以自动创建一个看起来像矩阵的视图,您可以用数据填充它,我什么都不知道。 我想为自己复制这个,你能详细说明这个自定义单元格应该在 IB 中的类类型吗?为了让您为每一行加载的新单元格映射到您的插座,MyTableView NIB 是否包含从 UITableViewCell 继承并具有 MyCell 插座的自定义类的表格视图单元格?您在这里使用 owner:self 似乎表明加载的单元格实际上是 UITableViewController 类型,这似乎很奇怪。 首先,给你的 UITableViewController 一个单元格的 IBOutlet。在我的示例中,@property(nonatomic,retain) IBOutlet UITableViewCell *myCell。在 IB 中,从库中拖出一个 Table View Cell。拖出其他组件(在我的示例中为 UILabel)作为单元格的子视图,并在属性检查器中为每个组件分配一个唯一的 Tag 值。使文件的所有者成为您的控制器,并将插座与您的单元相关联。你不需要 UITableViewCell 的子类。在我的示例中,loadNibNamed 方法将根视图的内容加载到 UITableViewController 上的 myCell 插座中。【参考方案2】:

您可以并排使用多个 UITableView。使用自定义单元格应该看起来不错。因此,您可以对其进行转换,直到它看起来像一个 DataGrid。 ;-)

【讨论】:

【参考方案3】:

我创建了UIGridView,其中一个 UITableViewCell 包含多个单元格。 可以学习UIGridView的源码。

我的建议是不要在你的 UIViewController 中编写代码。构建一个外部控件并在 UIViewController 中使用它是一种更好的方法。

或者你可以使用我的:)

【讨论】:

请在回答中包含UIGridView的代码,谢谢。

以上是关于iOS Tableview 中的多列的主要内容,如果未能解决你的问题,请参考以下文章

协助区分 URL 和 Tableview 数据

标题选择 UITableview 中的多个部分

滚动时tableview数据重复

创建 tableView 的自定义 CellView 后,我仍然没有得到多列视图。谁能帮我吗?

CustomTableCell 内的 UICollectionView

使用 SwiftUI 在 MacOS 中的多列 TableViews