我需要用两列列表显示我的表格视图。我阅读了一些有关通过覆盖 drawRect (此处)制作一些网格的相关文章。但是,我正在寻找一种简单的方法来设计我在笔尖中使用 IB 的单元格,然后加载它并在每行上推送两个单元格。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 但其他两个都这样做。