在静态UITableView中以编程方式在UITableViewCell中添加控件

时间:2012-03-14 07:18:38

标签: ios ios5 uitableview

我有一个静态UITableView,我通过cellForRowAtIndexPath方法填充NSDictionary。

 NSString *key = [sectionKeys objectAtIndex:[indexPath section]];
 NSArray *contents = [sectionContents objectForKey:key];
 NSString *contentForThisRow = [contents objectAtIndex:[indexPath row]];

 static NSString *CellIdentifier = @"Cell";

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
 if (cell == nil)
 {
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
 }

 [[cell textLabel] setText:contentForThisRow];

认为运行良好,我还需要向tableviewcells添加控件,每个单元格都有不同的控件。当我以编程方式将UITextField添加到cell1时,运行后的视图很好,直到5个部分,但是当我向下滚动我的tableview时,第6节的单元格也获得了一个UITextField控件。 UIDatePicker也是如此,我的tableview的前5个部分都没问题,但在滚动tableview时,最后两个部分也获得了UIDatePicker控件。

注意:我在表视图中有九个部分,每个部分都有一个单元格,前两个部分包含两个单元格。

1 个答案:

答案 0 :(得分:4)

我的理解:

细胞的布局变得混乱,一个细胞的控制转到另一个细胞。

我建议:

这是一个常见的问题,我前一段时间遇到过这种问题,而且非常令人沮丧。经过几个小时的谷歌搜索后,我找到了一个解决方案:对具有不同控件的单元格使用不同的单元格标识符。

示例:

5个细胞:2个细胞只有一个UITextField,1个细胞带有UITextField和一个UILabel,2个细胞带有UIImageView。使用3个不同的小区标识符1表示仅包含UITextField的单元格,1表示具有UIImageView的单元格,1表示具有UITextField和UILabel的单元格。

希望它有所帮助。