0

我正在尝试从一个表中传递一个数组,并将其填充到另一个表中。父表放在一个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 。我什至对这些数组进行了属性合成。有什么建议么?

4

2 回答 2

0

但是我面临的问题是,当我在子视图控制器中调用这个 songArray 时,它返回 NULL 。我什至对这些数组进行了属性合成。

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

您不需要创建新实例,因为您需要从那里使用同一个对象的值。

您可以通过以下方式执行此操作:如何在子视图中制作按钮以更新其父视图中的信息?

于 2013-03-04T08:59:58.487 回答
0

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

AppDelegate *app;


- (void)viewDidLoad
{

    [super viewDidLoad];

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

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

希望这会奏效。

于 2013-03-04T09:10:20.713 回答