2016-02-24 3 views
0

Я использую UIview и добавил tableview.The api отправляет данные для отображения текстового поля в tableiveiw.I может отображать данные текстового поля в ячейке, используя кодировку. Проблема заключается в том, что я просматриваю таблицу текстовое значение теряется.ios tableview text редактировать данные, потерянные при прокрутке

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return 100; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return subIncidentArray.count; 
} 

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

    static NSString *cellIdentifier = @"cellapi"; 
    UITableViewCell *incidentCell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    NSInteger row = [indexPath row]; 
    NSDictionary *dic = [subIncidentArray objectAtIndex:row]; 

    if (incidentCell == nil) 
     incidentCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 

    if ([[dic objectForKey:@"TemplateType"] isEqual:@1]) { 
     UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 40, 300, 30)]; 
     textField.delegate = self; 
     textField.tag = 1; 
     textField.text = self.contentOfTextField; 
     [incidentCell addSubview:textField]; 
     textField.borderStyle = UITextBorderStyleRoundedRect; 
     textField.textColor = [UIColor grayColor]; 

     if ([dic objectForKey:@"TextValue"] ==[NSNull null]) 
      textField.text = [dic objectForKey:@""]; 
     else 
      textField.text = [dic objectForKey:@"TextValue"]; 
    } 

    return incidentCell; 
} 
+4

Это потому, что ячейки повторно используются, и вы перерисовываете текстовое поле. Если вы действительно хотите, чтобы пользователи вводили текст в ячейку представления таблицы, подумайте о сохранении текста в массиве и затем повторите заполнение текстового поля при загрузке этого индекса. – CW0007007

+0

спасибо за быстрый ответ. Пожалуйста, покажите пример кода. Я новичок в разработке приложений IOS. – ras

+0

Когда вы говорите «потерянное текстовое значение», вы имеете в виду значение после редактирования текста? или начальное значение? –

ответ

0

Попробуйте, как это, он может работать

UITableViewCell *incidentCell = [[UITableViewCell alloc]init]; 
+0

спасибо ... но то же без изменений .... – ras

+1

не сообщать tw0 ответ. .. отредактируйте свой первый ответ и добавьте то, что вы хотите ... –

+0

уверен, что сделаю это со следующего раза –

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

    UITableViewCell *incidentCell = [UITableViewCell alloc]init]; 
    NSInteger row = [indexPath row]; 
    NSDictionary *dic = [subIncidentArray objectAtIndex:row]; 
    if ([[dic objectForKey:@"TemplateType"] isEqual:@1]) { 
     UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 40, 300, 30)]; 
     textField.delegate = self; 
     textField.tag = 1; 
     textField.text = self.contentOfTextField; 
     [incidentCell addSubview:textField]; 
     textField.borderStyle = UITextBorderStyleRoundedRect; 
     textField.textColor = [UIColor grayColor]; 
     if ([dic objectForKey:@"TextValue"] ==[NSNull null]) 
      textField.text = [dic objectForKey:@""]; 
     else 
      textField.text = [dic objectForKey:@"TextValue"]; 
    } 
    return incidentCell; 
} 

Попробуйте это может работать.

+0

Не повторное использование ячейки повлияет на производительность, особенно если источник данных огромен. Кроме того, ваш код имеет два возврата, это должен быть только один возврат, который является «инцидентом». –

+0

@mahesh жаль не работать ... вернуть ячейку не было в моем коде – ras

+0

2 возвращается? Зачем? – jose920405

0

У меня была такая же ошибка, прежде всего быть shure, что ваш subIncidentArray не пуст в cellForRowAtIndexPath. Попытайтесь повторно инициализировать данные этого массива в этом методе

Смежные вопросы