【问题标题】:UITextField turn places with UILabel in the UITableView during scrollingUITextField 在滚动期间在 UITableView 中使用 UILabel 翻转位置
【发布时间】:2011-03-20 16:46:40
【问题描述】:

单元格内的 UITableView 和 UITextField 有一个奇怪的问题(作为子视图)。

在窗口视图(UITableView、分组、可滚动)中有两个部分。

第一部分有 5 行:

1.1 - cell with UITextField 
1.2 - cell with UILabel
1.3 - cell
1.4 - cell with UITextField
1.5 - cell with UISwitchButton

第二部分有 1 行:

2.1 - cell

场景:我触摸行1.1,出现键盘。我可以输入一些文字。

问题:当我向下滚动 UITableView 到行 2.1 而不按键盘上的 Done(因此键盘仍在屏幕上),然后按 Done 某事奇怪的事情发生了,带有 UILabel 的单元格 1.2 的子视图与带有 UITextField 的单元格 1.1 的子视图一起转。

我尝试过使用self.tableView.scrollEnabled = NO; 的解决方法,它会有所帮助,但我确实想使用滚动。

【问题讨论】:

    标签: iphone objective-c uitableview keyboard uitextfield


    【解决方案1】:

    这很可能是因为您的 tableview 重复使用了单元格。 UITableView 尝试在内存中保留尽可能少的单元格,因此当屏幕上有 5 行时,您的 tableview 将如下所示:

    cell 1 
    cell 2
    cell 3 
    cell 4 
    cell 5
    

    如果您向下滚动以隐藏单元格 1 和 2,您的表格视图将如下所示

    cell 3
    cell 4
    cell 5
    cell 1
    cell 2
    

    tableview 可以做到这一点,因为您应该在实际单元格创建之外设置数据,并且您应该为与其他单元格不同的单元格使用不同的单元格标识符。

    在您的情况下,不将重用标识符设置为零,或者为您要显示的每个不同单元格使用唯一的重用标识符应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 2018-01-31
      • 2010-09-29
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多