iphone sdk - TableView Cell的奇怪错误

时间:2010-02-21 23:38:29

标签: iphone objective-c uitableview

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

注意:除了表格中的第一行,我想要TextView。

问题在于,当我实现if语句来检查indexpath.row然后向下滚动文本视图时,在某些单元格中不可见。它与某种程度上与我有关,具有相当大的高度> 200的细胞并且它们最初在屏幕外。当我向下滚动时,它就像底部下方的下一个单元格,最可见的单元格现在正在响应== 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;

}

有人能看到问题吗?

由于

2 个答案:

答案 0 :(得分:1)

为什么你设置textView,即使indexPath.row不为零(如果indexPath.row为零,你也不会释放)?

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

答案 1 :(得分:0)

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

if (cell == nil)

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