在UITableViewCell中以静态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添加到单元格1,运行后的视图是好的5个部分,但是当我滚动我的tableview进一步下来时,第6节的单元格也获得一个UITextField控件。 UIDatePicker也一样,我的tableview的前5个部分都很好,但在滚动tableview的时候,最后两部分也得到了UIDatePicker控件。

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

我所了解的:

你的单元格的布局正在变得混乱,从一个单元格到另一个单元格的控件。

我的build议是:

这是一个常见的问题,我前一阵子面对,这是非常令人沮丧的。 经过几个小时的search后,我发现了一个解决scheme:使用不同的单元格标识符来控制不同的单元格。

例:

5个单元格:只有UITextField的2个单元格,具有UITextField和UILabel的单元格以及具有UIImageView的2个单元格。 使用3个不同的小区标识符 1为只有UITextField的单元格,1为具有UIImageView的单元格,1为具有UITextField和UILabel的单元格。

希望能帮助到你。