0

あるテーブルから配列を渡して、別のテーブルに入力しようとしています。親テーブルは、 「 mainNavigUINavigationController 」と言う上に配置されます。子テーブルは、 「 SongsofAlbum」という名前の別のテーブルに配置されます。私の親テーブルは次のとおりです。 、ViewControllerdidSelectRowAtIndexPath

- (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

曲の配列を AppDelegate で取得し、代わりに songObj.songArray = 曲を割り当てて、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 に答える
0

しかし、私が直面している問題は、子ビューコントローラーでこの songArray を呼び出すと、 NULL が返されることです。配列をプロパティ合成しました。

他の ViewController では、このクラスの新しいインスタンスを作成しています。新しいインスタンスは NULL になります。

そこからこの同じオブジェクトの値を使用する必要があるため、新しいインスタンスを作成する必要はありません。

親ビューの情報を更新するために、子ビューにボタンを作成する方法は?

于 2013-03-04T08:59:58.487 に答える