gpt4 book ai didi

iphone - UITableViewCells 在屏幕上不可见时重新排序

转载 作者:行者123 更新时间:2023-12-03 21:12:48 25 4
gpt4 key购买 nike

我遇到了一个问题,并且很难找到解决方案,即使我认为很多人都应该遇到类似的问题。希望有人能帮助我。

我使用 UITableView 为我的应用程序创建了一个设置屏幕。 NSArray 用于配置我想要显示的控件。该数组如下所示:

[self setControlArray:[NSArray arrayWithObjects:
[NSArray arrayWithObjects:
[NSDictionary dictionaryWithObjectsAndKeys:@"Username", @"text", nil],
[NSDictionary dictionaryWithObjectsAndKeys:@"Password", @"text", nil],
[NSDictionary dictionaryWithObjectsAndKeys:@"Server", @"text", nil],
[NSDictionary dictionaryWithObjectsAndKeys:@"Port", @"text", nil],
[NSDictionary dictionaryWithObjectsAndKeys:@"Use SSL", @"text", nil],
nil],
nil]];

对于数组中的每个项目,我通过以下方式创建一个控件(在 ViewDidLoad 中):

// TextField: USERNAME
username = [[UITextField alloc] initWithFrame:CGRectMake(99.0, 15.0, 190.0, 18.0)];
[self layoutTextField:username withFont:[UIFont systemFontOfSize:13.0] keyboardType:UIKeyboardTypeAlphabet placeholder:@"Username" clearsOnBeginEditing:NO];
[username setText:[Settings sipUser]];

最后,使用 [tableView:cellForRowAtIndexPath] 消息将每个控件添加到 UITableView:

static NSString *CellIdentifier = @"Cell";

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

NSString *label = [[[controlArray objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] objectForKey:@"text"];
[[cell textLabel] setText:label];

// TextField: USERNAME
if ([[[[controlArray objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] objectForKey:@"text"] isEqual:@"Username"]) {
[[cell contentView] addSubview:username];
}
return cell;

每当我的数组中的一个控件由于滚动而失去焦点(从屏幕上消失)时,看不见的控件就会重新排序。我假设当滚动回视线时控件被释放并重新创建,但无论我尝试什么,我都找不到解决此问题的方法。

最佳答案

你的问题是,你正在使用 [tableView dequeueReusableCellWithIdentifier:CellIdentifier] 它实际上可以返回一个非零单元格(例如使用其他按钮之一),然后你只需返回它,看起来它们正在(几乎)随机地重新排列。

您必须在代码中创建一个 else 分支,如果出队的可重用单元不为零:

  • 从单元格中删除所有按钮
  • 添加您需要的按钮
  • 设置单元格的标签

然后返回它。

关于iphone - UITableViewCells 在屏幕上不可见时重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com