【问题标题】:how to fill one row with an image in a UITableView如何用 UITableView 中的图像填充一行
【发布时间】:2013-05-20 09:05:10
【问题描述】:

我正在创建一个UITableView,其中包含有关公司的信息。它有多个部分,我通过二维数组仅用textlabeldetailtextlabel 填充了大多数单元格。我希望用图像填充 1 个单元格(准确地说是第一部分的第二个单元格)。

我想到的第一件事是创建另一个二维数组,并用空对象填充它,除了一个图像。但是,这没有任何意义,我相信还有更专业和合乎逻辑的方法可以做到这一点。

所以问题是:如何在 tableViewCell 中填充图像,在 tableview 中填充多个部分。任何帮助将不胜感激,在此先感谢您!

【问题讨论】:

  • 根据您在 cellForRowAtIndexPath 中的问题“确切地说是第一部分的第二个单元格” if(indexpath.section == 0 && indexpath.row == 1) { // 创建特殊单元格 }

标签: iphone objective-c image uitableview xcode4.5


【解决方案1】:

不需要创建多维数组,只需在 UITableView 数据源的cellForRowAtIndexPath 方法中添加一个检查

if(indexpath.section == 0)

并设置单元格内容视图的背景图像,或者您也可以创建一个新的 UIImageView 并将其作为子视图添加到单元格中。

【讨论】:

  • 它帮助我确定了在表格视图中得到奇怪响应的原因。
【解决方案2】:

如果您预计会有一些此类异常,您可以创建一个异常字典,其中键是 NSIndexPath 对象,值是图像。然后在tableView:cellForRowAtIndexPath: 中检查字典是否包含索引路径。如果是这样,请使用图像,否则转到您的数组获取数据。

【讨论】:

    【解决方案3】:

    您的问题并不少见,现在唯一要了解的是委托方法为您提供了有关显示的部分和行的足够信息。现在在这些方法中,您可以使用数据源并检查所需条件并构造/返回单元格。

    这将是以下几行:

    (UITableViewCell *)tableView:(UITableView *)tableview cellForRowAtIndexPath:(NSIndexPath*)indexPath {
    
    // When you get to the section where you want customisation create and return the cell accordingly
    if(indexpath.section == 0) {
    
    // create Special Cell
    
    } else {
    
    // Create Normal Cell
    
    }
    
      return cell;
    
     }
    

    不要忘记使用dequecellwithreuseindentifier 方法重用创建的单元格。我相信你可以弄清楚。

    【讨论】:

      【解决方案4】:
      -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
          if (indexPath.section==0 && indexPath.row==1) {
              UIView *v=[[UIView alloc] initWithFrame:cell.frame];
              [v setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"image1.png"]]];
              cell.backgroundView=v;
          }else{
              UIView *v=[[UIView alloc] initWithFrame:cell.frame];
              [v setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"image2.png"]]];
              cell.backgroundView=v;//OR SET cell.backgroundView=nil;
          }
      }
      

      【讨论】:

        【解决方案5】:

        你可以使用 -

          (UITableViewCell *)tableView:(UITableView *)atable cellForRowAtIndexPath:(NSIndexPath*)indexPath {
        
          cell.imageView.image = [UIImage imageNamed:@"image.png"];
        
          return cell;
        
          }
        

        希望对你有帮助。

        【讨论】:

        • 这只会用一张图像填充所有单元格。恐怕@LeoNatan 是对的。
        • 是的,Leo,完全同意你的看法。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-06
        • 2013-07-27
        • 1970-01-01
        相关资源
        最近更新 更多