У меня есть проблема, и мне очень трудно найти решение, даже если бы я предположил, что у многих людей были похожие проблемы.Надеюсь, кто-нибудь может мне помочь.
Я создал экран настроек для своего приложения, используя 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]];
Наконец, каждый элемент управления добавляется вUITableView с использованием сообщения [tableView: cellForRowAtIndexPath]:
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;
Каждый раз, когда один из элементов управления в моем массиве выходит из фокуса (исчезает с экрана) из-за прокрутки, элементы управления, которые были вне поля зрения, переставляются,Я предполагаю, что элементы управления освобождаются и воссоздаются при прокрутке назад, но что бы я ни пытался, я не могу найти решение этой проблемы.