将NSArray从表的DidSelectRow传递到另一个UITableview

时间:2013-03-04 08:52:57

标签: ios uitableview

我正在尝试从一个表中传递一个数组,并将其填充到另一个表中。父表位于UINavigationController说“ mainNavig ”。子表被放置另一个ViewController名称为“ SongsofAlbum ”。我父表的didSelectRowAtIndexPath如下,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{   
    albumName = [eliminateDupe objectAtIndex:indexPath.row];   
    temp = [dictforalbum allKeysForObject:albumName ];
    songs = [NSMutableArray arrayWithCapacity:[temp count]];
    for (NSString *filename in temp) {
        [songs addObject:[[filename lastPathComponent] stringByDeletingPathExtension]];
    }
      NSLog(@"songs are %@",songs);    
    songObj = [[SongsofAlbum alloc]initWithNibName:@"SongsofAlbum" bundle:nil];
    [mainNavig pushViewController:songObj animated:YES];
    songObj.albumname = albumName;
    songObj.songArray = songs;
    NSLog(@"the song object array is %@ ",songObj.songArray)    
}

songObj.songArray的nslog返回上述方法中的数据。但我遇到的问题是,当我在子视图控制器中调用此songArray时,它返回NULL。我甚至属性合成了数组。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

  

但我面临的问题是,当我把这首歌叫做孩子时   查看控制器它返回NULL。我甚至属性合成了   阵列。

在其他ViewController中,您正在创建此类的新实例。新实例将为NULL。

您无需创建新实例,因此您需要使用此相同对象的值。

您可以通过以下方式执行此操作:How to make button in child view to update information in its parent view?

答案 1 :(得分:0)

您可以在AppDelegate中获取歌曲数组,然后分配songObj.songArray =您可以在SongsofAlbum类的viewDidLoad中分配的歌曲

AppDelegate *app;


- (void)viewDidLoad
{

    [super viewDidLoad];

    app=(AppDelegate *)[[UIApplication sharedApplication]delegate];

    songarray= [[NSMutableArray alloc]initWithArray:app.songs];
}

希望这会奏效。