重新加载数据 - 表空

时间:2015-02-19 11:38:22

标签: ios objective-c uitableview

我有2个表视图。一个是类别,另一个是视频。我将最喜欢的歌曲添加到一个数组中。但是,如果选择了喜爱的类别,我怎样才能重新加载我最喜欢的视频?

这就是我正在尝试但我的桌面视图是空的。

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

    if (tableView.tag==0) {

    TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (!cell) {
        cell=[[TableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
    }

    int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];

    cell.title.text=[[stories objectAtIndex: indexPath.row] objectForKey: @"title"];
   NSString * aux=[[stories objectAtIndex: indexPath.row] objectForKey: @"url"];
    NSString *   videoHTML =[NSString stringWithFormat: @"<iframe type=\"text/html\" width=\"100\" height=\"80\" src=\"%@\" frameborder=\"0\"></iframe>",aux] ;


        NSString *imagine=[[stories objectAtIndex:indexPath.row]objectForKey:@"thumbnail"];
        cell.imageSong.image=[UIImage imageNamed:imagine];
        NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:imagine]];
        cell.imageSong.image = [UIImage imageWithData:imageData];
        cell.imageSong.contentMode=UIViewContentModeScaleAspectFit;

        return cell;
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if (!tableView.tag==0) {

        int row =indexPath.row;
        if (row==0) {
            self.title1.text=@"ALL SONGS";
            [stories removeAllObjects];
            [self parse];
            i=0;
            [self showMenu:nil];


        }

        else if (row==1) {

            self.title1.text=@"FAVORITE";
             b=[favoriteArray count];
            if (b==0) {
                NSLog(@"NSArray empty");
                [[[UIAlertView alloc]initWithTitle:@"Attention !" message:@"No videos !" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]show];


            }

            else{
                [stories removeAllObjects];
                [self.tableView reloadData];
                i=0;
                [self showMenu:nil];
            }



        }
        else
        {
        self.title1.text=[categoryArray objectAtIndex:indexPath.row-1];
        [stories removeAllObjects];
        NSString * path =[feeds objectAtIndex:indexPath.row-1];
        [self parseXMLFileAtURL:path];
        i=0;
        [self showMenu:nil];}
        self.karaokeBTn.hidden=YES;
        self.menu.hidden=NO;
        self.title1.hidden=NO;
    }



-(void)parse{
    if ([stories count] == 0) {
        for (int i=0; i<[feeds count]; i++) {
            NSString * path =[feeds objectAtIndex:i];
            [self parseXMLFileAtURL:path];

        }

    }
}

在最喜欢的数组中,我已经拥有了视频,标题和图片的网址。我不需要再次解析Feed。

2 个答案:

答案 0 :(得分:1)

也许你想在解析之后重新加载你的表:

-(void)parse{
    if ([stories count] == 0) {
        for (int i=0; i<[feeds count]; i++) {
            NSString * path =[feeds objectAtIndex:i];
            [self parseXMLFileAtURL:path];

        }
        [self.tableView reloadData]; 
    } 

答案 1 :(得分:0)

我不确定我是否理解你的问题。但是既然你说你的tableView是空的,那就是一个可能的解决方案。

如何设置stories数组?如果是从Web获取异步数据,则在调用这些委托方法时,您将拥有一个空的stories数组。

完成数据提取后,您必须重新加载表视图。在数据提取方法的完成块上。

[self.tableView reloadData];