Мое UITableViewCell
позиция изменена во время прокрутки UITableView
. Здесь у меня больше UITableViewCell
. Таким образом, он охватывает более одного экрана страницы. Когда я прокручиваю сверху вниз, позиция UITableViewCell
изменяется, например, 1-я ячейка заняла 5-е место. И вторая ячейка пришла к 1-й и т.д.Изменение позиции UITableViewCell во время прокрутки UITableView
Мой код:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"SignUpWithEmailCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.backgroundColor = [UIColor clearColor];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
switch (indexPath.row) {
case 0: {
UILabel *lblFirstName = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 40)];
lblFirstName.text = @"First Name";
[cell.contentView addSubview:lblFirstName];
self.txtFirstName = [[UITextField alloc]initWithFrame:CGRectMake(lblFirstName.frame.origin.x + lblFirstName.frame.size.width + 5, 0, 190, 40)];
self.txtFirstName.delegate = self;
self.txtFirstName.text = strFirstName;
self.txtFirstName.tag = 0;
self.txtFirstName.userInteractionEnabled = YES;
self.txtFirstName.font = [UIFont systemFontOfSize:15.0];
self.txtFirstName.clearButtonMode = UITextFieldViewModeWhileEditing;
self.txtFirstName.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
[cell.contentView addSubview:self.txtFirstName];
break;
} case 1: {
UILabel *lblLastName = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 40)];
lblLastName.text = @"Last Name";
[cell.contentView addSubview:lblLastName];
self.txtLastName = [[UITextField alloc]initWithFrame:CGRectMake(lblLastName.frame.origin.x + lblLastName.frame.size.width + 5, 0, 190, 40)];
self.txtLastName.backgroundColor = [UIColor clearColor];
self.txtLastName.delegate = self;
self.txtLastName.tag = 1;
self.txtLastName.text = strLastName;
self.txtFirstName.userInteractionEnabled = YES;
self.txtLastName.returnKeyType = UIReturnKeyDone;
self.txtLastName.clearButtonMode = UITextFieldViewModeWhileEditing;
self.txtLastName.font = [UIFont systemFontOfSize:15.0];
self.txtLastName.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
[cell.contentView addSubview:self.txtLastName];
break;
}
default:
break;
}
}
return cell;
}
Можно ли направить меня в архив правильно ..
Заранее спасибо.
Я удалил 'if (cell == nil)' loop. Теперь он работает отлично. Но у меня есть одно сомнение. Является ли UITableViewCell постоянно создаваться при прокрутке? Будет ли отображаться некоторые предупреждения о памяти? –
да каждый раз, когда вы добавляете элемент, добавленный с помощью addSubview: по последнему элементу, для чего лучше создать пользовательскую ячейку, и вы заменяете только значение объектов –
K. Я внесу изменения. Спасибо за ваш ответ .. –