UITableview не перезагружается - PullRequest
       3

UITableview не перезагружается

1 голос
/ 07 сентября 2011

У меня tableview правильно загружается первый раз, но он должен перезагрузить данные при вызове метода loadJsonData Метод reloadData вызывается в конце метода loadJsonData. Но tableview не перезагружается. Источник данных обновляется перед вызовом метода reloadData. Для делегата и источника данных tableview также задано значение self.

Я проверил, выполняет ли он метод numberOfRowsInSection, и обнаружил, что он не выполняет метод. Кто-нибудь может мне помочь?

Ниже приведен код:

-(void)loadJsonData:(NSString *)fileName:(int )count
 {

    titleArray=[[NSMutableArray alloc]init];
    dateArray=[[NSMutableArray alloc]init];
    descriptionArray=[[NSMutableArray alloc]init];
    urlArray=[[NSMutableArray alloc]init];
    thumbnailArray=[[NSMutableArray alloc]init];

    NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"json"];


    NSString *fileContent = [[NSString alloc] initWithContentsOfFile:filePath];



    SBJSON *Parser = [[SBJSON alloc] init];

    NSDictionary *data = (NSDictionary *) [Parser objectWithString:fileContent error:nil];

    NSArray *items=[data objectForKey:fileName];

    NSSortDescriptor *sortDescriptor;
    sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"date"
                                                  ascending:YES] autorelease];
    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
    NSArray *sortedArray;
    sortedArray = [items sortedArrayUsingDescriptors:sortDescriptors];
    items=sortedArray;



    for (NSDictionary *item in items)
    {   

        NSString *temp=[item objectForKey:@"title"];
        NSString* str = [temp stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        [titleArray addObject:str];

        temp=[item objectForKey:@"date"];
        [dateArray addObject:temp];

        temp=[item objectForKey:@"thumbnailURL"];
        str = [temp stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        [thumbnailArray addObject:str];
        temp=[item objectForKey:@"description"];
        str = [temp stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        [descriptionArray addObject:str];
        temp=[item objectForKey:@"htmlURL"];
        str = [temp stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        [urlArray addObject:str];

    }
    [Parser release];


    if (count==1)
    {
        [tableview performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
        NSLog(@"reload data test");

    }


}



  -(NSInteger) numberOfSectionsInTableView:(UITableView *)aTableView {
    // Return the number of sections.
    return 1;
}


  -(NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    NSLog(@"nof rows test..");
    return [thumbnailArray count];
}

EDIT

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

    CustomCell *cell;
    cell=(CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"cell"];

    if (cell == nil) {
        cell = [[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"cell"] autorelease];



        cell.contentMode=UIViewContentModeScaleAspectFit;
        cell.Title.text=[titleArray objectAtIndex:indexPath.row];


        cell.description.text=[descriptionArray objectAtIndex:indexPath.row];
        NSURL *url = [NSURL URLWithString:[thumbnailArray objectAtIndex:indexPath.row]];
        NSData *data = [NSData dataWithContentsOfURL:url];
        UIImage *img = [[UIImage alloc] initWithData:data];

        cell.Image.image=img;
        cell.Date.text=[dateArray objectAtIndex:indexPath.row];
        NSLog(@"date is :  %@",cell.Date.text);             

        cell.selectionStyle=UITableViewCellSelectionStyleNone;

    }



    return cell;
}

Ответы [ 5 ]

1 голос
/ 30 декабря 2011

Сначала проверьте номер раздела.Если по какой-либо причине ваш код возвращает 0, никакие другие функции делегата не будут вызваны.

0 голосов
/ 30 декабря 2011

99,99% проблема связана только с настройками delagate и dataSource для tableview (или вы, возможно, не сохранили xib, если устанавливаете их из xib), если numberOfRowsInSection не вызывается.

удалить всех делегатов. переназначить делегатов и убедиться, что вы сохраняете все свои файлы, включая xib.

0 голосов
/ 07 сентября 2011

Я не могу не чувствовать, что ваш performSelectorOnMainThread: немного избыточен и может вызывать вашу проблему, хотя я не понимаю, почему Не могли бы вы просто использовать: [tableview reloadData];

Ответ при условии, что мой @iPhoneiPadDev указывает на недостаток, который я пропустил. Измените свой if на if (count >= 0)

0 голосов
/ 07 сентября 2011

Измените ваш код, как указано ниже ...

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

    CustomCell *cell;
    cell=(CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"cell"];

    if (cell == nil) {
            cell = [[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"cell"] autorelease];
    }

    cell.contentMode=UIViewContentModeScaleAspectFit;
    cell.Title.text=[titleArray objectAtIndex:indexPath.row];

    cell.description.text=[descriptionArray objectAtIndex:indexPath.row];
    NSURL *url = [NSURL URLWithString:[thumbnailArray objectAtIndex:indexPath.row]];
    NSData *data = [NSData dataWithContentsOfURL:url];
    UIImage *img = [[UIImage alloc] initWithData:data];

    cell.Image.image=img;
    cell.Date.text=[dateArray objectAtIndex:indexPath.row];
    NSLog(@"date is :  %@",cell.Date.text);             

    cell.selectionStyle=UITableViewCellSelectionStyleNone;

    return cell;
    }
0 голосов
/ 07 сентября 2011

Вы должны использовать следующее.

if (count > 0)
{
    [tableview reloadData];
    NSLog(@"reload data test");

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