0

在我的应用程序中,当提示用户选择一个项目时,我会弹出一个 UITableView。根据商品是否有货、缺货、是否在订购等,我想在 UITableViewCell 的右侧显示一张图片。

我试过使用附件视图按钮,但它没有显示在 UITableViewCell 上。我尝试将 UITableViewCellStyle 更改为 UITableViewCellStyleValue2 (带有详细关闭按钮的样式),并且还尝试直接设置单元格的附件类型。

static NSString *CellIdentifier = @"MyCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    //cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];
}

[cell.textLabel setText:@"Testing"];
[cell.detailTextLabel setText:@""];

//cell.accessoryType = UITableViewCellAccessoryNone;
//cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

UIImageView *imageView = [[UIImageView alloc] initWithImage:[myImageFilePath stretchableImageWithLeftCapWidth:0 topCapHeight:1.0]];
[imageView setContentMode: UIViewContentModeScaleAspectFit];
[imageView setFrame:CGRectMake(0, 5, cell.frame.size.height - 10, cell.frame.size.height - 5)];

cell.accessoryView = imageView;

return cell;

当应用程序运行时,UITableViewCells 会出现“测试”文本,但单元格的右侧没有图像。

是否需要覆盖另一种方法才能为详细信息披露按钮实现自定义 UIImage?

“按钮”更像是一个状态指示器,因为我不希望点击按钮做任何与点击 UITableViewCell 上其他任何地方不同的事情(只需选择行)。


一些附加信息:

如果我删除

[imageView setFrame:CGRectMake(0, 5, cell.frame.size.height - 10, cell.frame.size.height - 5)];

然后图像显示在 UITableViewCell 中,但它太大并且不适合单行,因此它与其他行的辅助视图重叠。

我正在使用 setFrame 以便它调整图像的大小以适合 UIViewContentModeScaleAspectFit 以便它适合行,但它似乎完全阻止了图像的出现。

请注意,在此示例中 cell.frame.size.height = 44。


如果我将框架更改为:

[imageView setFrame:CGRectMake(0.0, 0.0, 120, 44)];

然后图像出现在行上。

但是,由于它是 120 像素宽,它会截断带有尾随 ... 的文本。图像可以在尾随 ... 之前放置大约 3 次,宽度为 120,高度为 44。

我怎样才能让尾随 ... 更接近图像?

如果我将 120 降低到较低的值,图像会向右移动并最终从单元格中消失。

4

4 回答 4

1

UITableView 的宽度为 804。将其更新为 768 允许我使用发布的原始代码。

于 2013-07-23T03:55:11.753 回答
0

另一种方法是子类化 UITableviewCell 并在“layoutSubviews”中设置框架,并确保为每个单元格传递正确的行高。

通过子类化,您将获得完全的灵活性。

希望这可以帮助

于 2013-07-23T05:10:41.647 回答
0

您的问题与此处的问题非常相似: Using a custom image for a UITableViewCell's accessoryView and have it respond to UITableViewDelegate

除非需要,否则您可以忽略“让它响应”位。但是,正如您在此处看到的,对于 accessoryView 属性,矩形是正方形的,因此 120x44 的图像可能永远无法正确拟合。

我会重新考虑您解决此问题的方法,并创建一个自定义 UITableViewCell 子类,其中包含您需要的必要项目(听起来像 UILabel 和 UIImageView)。这样,您可以轻松控制标签的大小与图像的大小、标签如何换行(如果它完全换行或可能被截断)等等。

于 2013-07-23T03:55:44.713 回答
-1

我猜你的 CGRect X 和 Y 有问题,在这种情况下是 0 和 5。也许尝试以动态方式设置它们可以解决这个问题。让我知道

于 2013-07-22T18:22:31.493 回答