2016-05-06 1 views
0

Whenver я пытаюсь получить данные из ячейки он возвращает пустое значение, однако я обнаружил, что я не в состоянии прочитать данные из ячейки Scolled вверх/вниз TableViewTableView Невозможно получить DATA которым прокручиваются вверх или вниз

здесь изображение очищая мое положение enter image description here

Вот код им с помощью для сохранения данных

NSMutableArray *arrTmp = [[NSMutableArray alloc] init]; 
    for(int i = 0; i<[tblView numberOfRowsInSection:0]; i++){ 
     NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0]; 
     FUCellView *cell   = [tblView cellForRowAtIndexPath:indexPath]; 
     UITextField *tfNo   = (UITextField *)[cell viewWithTag:i + 100]; 
     UIButton *btnTime  = (UIButton *)[cell viewWithTag:i + 200]; 
     UITextField *tfVisit  = (UITextField *)[cell viewWithTag:i + 300]; 
     UIButton *btnProvider = (UIButton *)[cell viewWithTag:i + 400]; 

     NSMutableDictionary *theDictionary = [[NSMutableDictionary alloc] init]; 
     if([tfNo.text length] > 0 && tfNo.text != nil){ 
      NSString* str = [tfNo.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
      [theDictionary setObject:str forKey:@"number"]; 
     } 
     else{ 
      [theDictionary setObject:@"" forKey:@"number"]; 
     } 
     if([btnTime.titleLabel.text length] > 0 && btnTime.titleLabel.text != nil){ 
      NSString* str = [btnTime.titleLabel.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
      [theDictionary setObject:str forKey:@"time"]; 
     } 
     else{ 
      [theDictionary setObject:@"" forKey:@"time"]; 
     } 
     if([tfVisit.text length] > 0 && tfVisit.text != nil){ 
      NSString* str = [tfVisit.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
      [theDictionary setObject:str forKey:@"visit_type"]; 
     } 
     else{ 
      [theDictionary setObject:@"" forKey:@"visit_type"]; 
     } 
     if([btnProvider.titleLabel.text length] > 0 && btnProvider.titleLabel.text != nil){ 
      NSString* str = [btnProvider.titleLabel.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
      [theDictionary setObject:str forKey:@"provider"]; 
     } 
     else{ 
      [theDictionary setObject:@"" forKey:@"provider"]; 
      NSLog(@"ProviderELse"); 
     } 
     [arrTmp addObject:theDictionary]; 

ответ

1

Как я вас понимаю, вы должны держать ур данные где-то еще (и, возможно, есть модели с данными правильными?), а затем приложение соответствующий набору моделей (в cellForRowAtIndexPath) UITableView. Нет необходимости устанавливать или получать данные напрямую с UITableView. Просьба ознакомиться с официальной документацией here

Here - хороший урок о представлении таблиц. Удачи.

+0

для сохранения данных im с использованием массивов, которые были стерты. Вероятно, часто время, поэтому я нашел, что этот подход для меня проще, имеет недостаток. ok будет думать о вашем предложении – iDeepak

+1

Пожалуйста, прочитайте о шаблоне MVC (модель - вид - контроллер), ваш взгляд не должен содержать какие-либо данные, показывать только его, а просмотр не может напрямую взаимодействовать с моделью только через контроллер. Если ваш массив часто стирается, попробуйте сохранить исходную версию этого массива в некотором виде singleton (шаблон проектирования) и в работе контроллера с копией этого массива. –

0

UITableview повторно использует ячейки. Таким образом, вы не можете получить значения в цикле for. Это вернет нуль.

Лучшим подходом является использование модели данных для хранения значений.

Например: Создать модель данных. Добавьте к нему некоторые свойства. И загрузите ячейки с этими свойствами. Теперь вам нужно только обновить свойства объекта модели.

Храните эти объекты модели в массиве.

Наконец, вы можете подготовить данные в любое время.

+0

Я не знаком с Core Data, попытаюсь реализовать свой подход, используя два или более массива, спасибо за ответ – iDeepak

+0

Я отправлю вам пример кода –

+0

Спасибо @Abdul Yasin – iDeepak

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