我正在使用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;
}
有人能看到问题吗?
由于
答案 0 :(得分:1)
为什么你设置textView,即使indexPath.row不为零(如果indexPath.row为零,你也不会释放)?
尝试将创建和设置移动到“if(indePath.row!= 0)”块(位于addSubView行上方)内部。
答案 1 :(得分:0)
您的问题可能是在创建单元格时,为它们提供所有相同的单元格标识符。当第一个单元格排队时,它没有文本视图,但是这部分代码被称为:
if (cell == nil)
返回一个单元格,而不是nil
,但对于第一个单元格,它没有文本视图。尝试更改第一个单元格的单元格标识符,看看是否有更好的结果;这样可以防止它被重复使用。