iphone sdk-TableView单元格的奇怪错误

iphone sdk-TableView单元格的奇怪错误,iphone,objective-c,uitableview,Iphone,Objective C,Uitableview,我在CellForRowatineXpath中工作,我正在尝试将文本视图嵌入到单元格中。现在,嵌入部分很好,但是当我尝试加载除第一行之外的所有文本视图时,我遇到了最奇怪的问题 注意:除了表中的第一行之外,我希望所有行都包含TextView 问题是,当我实现一个if语句来检查indexpath.row,然后向下滚动时,文本视图在某些单元格中不可见。这与我拥有高度大于200的细胞有关,它们最初是在屏幕外的。当我向下滚动时,就好像最底部可见单元格下面的下一个单元格现在响应的是一个indexpath行=

我在CellForRowatineXpath中工作,我正在尝试将文本视图嵌入到单元格中。现在,嵌入部分很好,但是当我尝试加载除第一行之外的所有文本视图时,我遇到了最奇怪的问题

注意:除了表中的第一行之外,我希望所有行都包含TextView

问题是,当我实现一个if语句来检查indexpath.row,然后向下滚动时,文本视图在某些单元格中不可见。这与我拥有高度大于200的细胞有关,它们最初是在屏幕外的。当我向下滚动时,就好像最底部可见单元格下面的下一个单元格现在响应的是一个indexpath行==0

我完全糊涂了,有人有什么想法吗

我的代码

// Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
   CGRect frame; frame.origin.x = 5; frame.origin.y = 10; frame.size.width = 20; frame.size.height = 25; 

           // ..some unrelated setup in here

  //textbox setup
  textView = [[UITextView alloc] initWithFrame:CGRectMake(30, 80, 500, 150)];
  textView.layer.cornerRadius = 10;
  textView.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.2];
  textView.font = [UIFont fontWithName:@"Helvetica" size:17];
  textView.text = @"test-content";
  textView.layer.borderWidth = 1;
  textView.layer.borderColor = [[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:0.9] CGColor];
  textView.tag = 4;

  if (indexPath.row != 0) {
  [cell.contentView addSubview:textView];
  [textView release];  
  }
   }
  // a little more unrelated stuff


return cell;
}

有人能看到问题吗


谢谢

为什么即使indexPath.row不是零(如果indexPath.row为零,您也不会释放),您仍要设置textView


尝试将创建和设置移动到“if(indePath.row!=0)”块内(就在addSubView行上方)。

为什么即使indexPath.row不为零也要设置textView(如果indexPath.row为零则不释放)


尝试将创建和设置移动到“if(indePath.row!=0)”块内(就在addSubView行上方)。

您的问题可能是,在创建单元格时,您给了它们所有相同的单元格标识符。当第一个单元格排队时,它没有文本视图,但这部分代码被调用:

if (cell == nil)

返回的单元格不是
nil
,但对于第一个单元格,它没有文本视图。尝试更改第一个单元格的单元格标识符,以查看是否有更好的结果;这将防止它被重复使用。

您的问题可能是,当您创建单元格时,您给了它们所有相同的单元格标识符。当第一个单元格排队时,它没有文本视图,但这部分代码被调用:

if (cell == nil)

返回的单元格不是
nil
,但对于第一个单元格,它没有文本视图。尝试更改第一个单元格的单元格标识符,以查看是否有更好的结果;这将防止它被重复使用。

我很难想象你的描述。你能附上一张截图吗?我很难想象你的描述。您可以附加一个屏幕截图吗?您的代码为每个单元格创建一个文本视图,如果单元格位于第0行,则将其隐藏。这将导致创建不必要的文本视图。您建议这样做,但却做了相反的事情。@Felix,您的代码看起来不错,但注释仍然误解了正在发生的事情。我建议您阅读《表视图编程指南》——您创建一个“主单元”的概念是不正确的。“cell==nil”对于每个单元格标识符将不止一次为真。我确实误解了这一点,我再次检查了它。这里的文档不是很清楚。我将删除我的帖子。您的代码为每个单元格创建一个文本视图,如果单元格位于第0行,则将其隐藏。这将导致创建不必要的文本视图。您建议这样做,但却做了相反的事情。@Felix,您的代码看起来不错,但注释仍然误解了正在发生的事情。我建议您阅读《表视图编程指南》——您创建一个“主单元”的概念是不正确的。“cell==nil”对于每个单元格标识符将不止一次为真。我确实误解了这一点,我再次检查了它。这里的文档不是很清楚。我将删除我的帖子。这是我以前尝试过的,但还是有点奇怪。当我将if()更改为switch/case函数时,出现了一个修复程序。这是我以前尝试过的,但仍然有点奇怪。我将if()更改为switch/case函数时发生了一个修复。