Табличное представление, прокручивающее текстовое значение поля, не сохраняется - PullRequest
1 голос
/ 01 июля 2011

У меня есть UITableView некоторые UITextField в ячейке табличного представления. UITextField s пользователь вводит некоторые значения в текстовое поле и затем просматривает таблицу. Значение в текстовом поле не сохраняется. код ниже

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {  
return 100; 
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier    = @"Cell";
static NSString *CellIdentifierFirst    = @"CellFirst";

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

}

NSArray *cellSubs = cell.contentView.subviews;
for (int i = 0 ; i < [cellSubs count] ; i++) {
    [[cellSubs objectAtIndex:i] removeFromSuperview];
}

cell.selectionStyle = UITableViewCellSelectionStyleNone;

UITextField * textFieldRounded = [[UITextField alloc] initWithFrame:CGRectMake(100, 5, 150, 40)];
textFieldRounded.borderStyle = UITextBorderStyleNone;
textFieldRounded.textColor = [UIColor blackColor]; 
textFieldRounded.font = [UIFont systemFontOfSize:17.0];  
textFieldRounded.placeholder = @"Type here"; 
textFieldRounded.backgroundColor = [UIColor whiteColor]; 
textFieldRounded.autocorrectionType = UITextAutocorrectionTypeNo;   
textFieldRounded.keyboardType = UIKeyboardTypeDefault;  
textFieldRounded.returnKeyType = UIReturnKeyDone;  
textFieldRounded.clearButtonMode = UITextFieldViewModeWhileEditing; 
textFieldRounded.delegate = self;   
[cell.contentView addSubview:textFieldRounded];
return cell;
}

Так, пожалуйста, помогите мне всем

Ответы [ 2 ]

3 голосов
/ 01 июля 2011

У меня есть такая же функция в одном из моих приложений, и я использовал приведенный ниже код для достижения этой цели, и у меня никогда не было таких проблем.

Прежде всего вам необходимо временно сохранить все значения textField в массиве. Сделайте массив таким.

arrTemp=[[NSMutableArray alloc]initWithObjects:[NSString stringWithFormat:@""],
     [NSString stringWithFormat:@""],
     [NSString stringWithFormat:@""],
     [NSString stringWithFormat:@""],
     [NSString stringWithFormat:@""],
     [NSString stringWithFormat:@""],
     [NSString stringWithFormat:@""],
     [NSString stringWithFormat:@""],
     [NSString stringWithFormat:@""],nil];

Тогда передайте все теги textField = indexPath.row;

После этого вам нужно заменить значение textField двумя способами ниже.

-(BOOL)textFieldShouldReturn:(UITextField *)textField{
   [arrTemp replaceObjectAtIndex:textField.tag withObject:textField.text];
}

-(void)textFieldDidEndEditing:(UITextField *)textField{
 [arrTemp replaceObjectAtIndex:textField.tag withObject:textField.text];
}

Наконец, вам нужно установить это значение в методе источника данных cellForRowAtIndexPath. Так что всякий раз, когда пользователь прокручивает таблицу, он устанавливает предыдущее значение из временного массива. Вот так.

cell.txtEntry.text = [arrTemp objectAtIndex:indexPath.row];

Возможно, я забыл кое-какой код вставить здесь. Поэтому, если у вас возникнут проблемы, пожалуйста, дайте мне знать.

0 голосов
/ 01 июля 2011

Вам нужно будет поддерживать изменяемый массив для всех строк.Вам придется сохранять текст в этом массиве каждый раз, когда текст изменяется, и устанавливать текст из массива при вызове cellForRowAtIndexPath:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...