iPad上的UITableViewCell indexPath.section问题

时间:2014-01-17 15:52:16

标签: ios ipad uitableview

我正在尝试在第8行的单元格文本旁边添加图像。我的问题是它没有进入(indexPath.row == 9)方法,而我放置了断点我从indexPath.row = {length = 2, path = 0 - 0}得到了这个值。那么请问我的问题在哪里?

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [data count]; 
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
  if (!cell)
  {
    cell = [[[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleValue1) reuseIdentifier:@"cell"] autorelease];

    UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bakiyem-cell-bg.png"]];
    img.x = 10.;
    img.y = -6.;
    [cell.contentView addSubview:img];
    [img release];

    //
    cell.textLabel.font = [Constants regularFontWithSize:24.];
    cell.textLabel.textColor = [Constants textGrayColor];
    cell.detailTextLabel.font = [Constants mediumFontWithSize:24.];
}

cell.detailTextLabel.textColor = indexPath.row == 4 ? [UIColor colorWithRed:218./255. green:0 blue:37./255. alpha:1] : [Constants textGrayColor];

   //My issue
 if (indexPath.row == 9) {

        cell.imageView.image = [UIImage imageNamed:@"info-logo.png"];   
 }

//
NSDictionary *dic = [data objectAtIndex:indexPath.row];
cell.textLabel.text = [dic objectForKey:@"value1"];
cell.detailTextLabel.text = [dic objectForKey:@"value2"];

return cell;
}

5 个答案:

答案 0 :(得分:0)

使用indexPath.section == 7进行尝试。或者可能indexPath.row == 7正如Cem在评论中写的那样。

答案 1 :(得分:0)

  • 八行的索引为7
  • 您可能需要indexPath.row而不是indexPath.section
  • 如果您想自定义UITableViewCell,请使用自定义单元格

答案 2 :(得分:0)

1个部分内有9行,或9个部分,每个部分有1行吗?

对于第一种情况使用: - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {       返回1;  }

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {   if(section == 0)   {          返回9;   } }

对于第二种情况;

  • (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {   返回9; }

    • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 返回1; }

另外,在cellForRowAtIndexPath方法中使用:

在第一种情况下:indexPath.row == 9 在第二种情况下:indexPath.section == 0

答案 3 :(得分:0)

真的应该是

if (indexPath.row == 7) {

因为你只有一行。

如果断点仍然没有输入你的if语句,那么再添加一些记录来查看它的内容。

如果你尝试

怎么样
NSLog(@"row = %i", indexPath.row);
if (indexPath.row == 7) {
    NSLog(@"In if statement for row = %i", indexPath.row);
    UIImage *myImage = [UIImage imageNamed:@"info-logo.png"];
    NSLog(@"My image=%@",myImage);
    cell.imageView.image = myImage;
}

NSLog中显示什么?

答案 4 :(得分:0)

你应该在以下方法中至少有9行是数据数组而indexPath.row = {length = 2,path = 0 - 0}意味着你在第0部分的第0行。如果以行数方法返回硬编码9,则它将输入(indexPath.row == 8)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    return [data count]; }