【发布时间】:2010-07-15 05:22:35
【问题描述】:
如何在tableview的行中创建多列?
【问题讨论】:
标签: ios objective-c uitableview
如何在tableview的行中创建多列?
【问题讨论】:
标签: ios objective-c uitableview
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;
}
【讨论】:
您可以并排使用多个 UITableView。使用自定义单元格应该看起来不错。因此,您可以对其进行转换,直到它看起来像一个 DataGrid。 ;-)
【讨论】:
我创建了UIGridView,其中一个 UITableViewCell 包含多个单元格。 可以学习UIGridView的源码。
我的建议是不要在你的 UIViewController 中编写代码。构建一个外部控件并在 UIViewController 中使用它是一种更好的方法。
或者你可以使用我的:)
【讨论】: