0

こんにちは、Song オブジェクトを保持する Playlist オブジェクトによって設定される UITableViewController があります。私が欲しいのは、ユーザーが TVC でプレイリスト名をタップして UIPageViewController を起動したときです。そのモデルは、UITableViewController でタップされたプレイリストによって初期化されます。次に、別のViewControllerで必要なものを表示します。

UIPageViewController の実装は、私のアプリでは次のように機能します。

ModelController --> RootViewController --> DataViewController (Apple の例と同様)

これまでのところすべて稼働していますが、タップされたプレイリストでモデルを正しく初期化できません。私の PlaylistsTVC には、目的のビュー コントローラーを定義する prepareForSegue メソッドがあり、arr はタップされたプレイリストの曲を保持しますが、それを ModelController に渡す方法がわかりません。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
     if (sender)
     {
         if ([segue.identifier isEqualToString:@"Segue"])
        {
            NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
            NSArray *arr = @[[[self.pdc.playlistMasterList objectAtIndex:indexPath.row] songs]];
            NSLog(@"arr: %@", arr);
            RootViewController *rvc = (RootViewController *)segue.destinationViewController;
            rvc.hidesBottomBarWhenPushed = YES;
        }
    }

}

PlaylistDataController クラスに配列を設定してから、ModelController クラスに新しいインスタンスを作成しようとしましたが、うまくいきませんでした。また、NSUserDefaults の曲でいっぱいの配列をエンコードおよびデコードしてから、それを ModelController に渡そうとしましたが、うまくいくかどうかを確認するためだけに試してみました。

上記のセグエメソッドから、ページビューコントローラーのモデルを初期化する方法を教えてもらえますか? または、その問題に関する他のアイデアは大歓迎です。

ありがとう!

4

1 に答える 1

0

(コントローラーの命名に少し混乱しています...)

で配列を操作するRootViewController場合、アプローチは基本的に正しかったです。rvc にプロパティが必要で、 に設定しprepareForSegueます。例えば:

...
RootViewController *rvc = (RootViewController *)segue.destinationViewController;
[rvc.theArray initWithArray:arr];
...
于 2013-01-31T21:53:58.787 に答える