我有UITableView
个自定义单元格,这些单元格包含一些textFields。这里当我在textFields中输入一些数据并滚动表格视图数据时它会消失,我想是因为每次它都在创建新单元格。
我通过使用数组并在其中插入每个单元来解决此问题,但在这里我无法重复使用单元格,因此我们浪费了内存。
你能告诉我如何处理这种行为的完美方式吗?
答案 0 :(得分:5)
使用数组存储每个文本字段的值,并在
中设置所需文本字段的值- (UITableViewCell *)tableView:(UITableView *)tTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法
答案 1 :(得分:1)
听起来好像它与您在tableView:cellForRowAtIndexPath:
方法中创建单元格的方式有关。但是,如果没有看到您的实施,我只能提出一般性建议(将您的实施添加到您的问题中,以便人们可以更加具体地了解他们的答案)。
如果您担心内存,请通过以下方式创建单元格来使用UITableView's
内置单元格重用功能:
NSString *identifier = @"reuseIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
}
cell.textLabel.text = @"text relating to index path";
以上内容将检查tableView
以查看是否有任何可用的单元格可供重复使用。如果没有,那么将返回nil。这是使用initWithStyle:reuseIdentifier:
方法创建单元格的位置,该方法将单元格标记为在滚动视图外时适合重用。这意味着您最多只能实例化一次可见的单元格总数,这样可以保持表格的内存占用率很低而且很低。
请注意,我们在nil检查之外设置单元格的textField.text
- 这是为了确保如果我们检索到可重复使用的单元格,我们将使用与{{1}相关的文本内容覆盖其旧文本内容传递给方法。