TableView не удается получить данные, которые прокручиваются вверх или вниз

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

вот изображение прояснение моей ситуации
Введите описание изображения здесь

Вот код im, используемый для сохранения данных

  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];

2 ответа

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

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

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

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

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

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

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