嗨我有一个UITableViewController,它由播放列表对象填充,它们持有Song对象。我想要的是当用户点击我的TVC中的播放列表名称时,触发UIPageViewController,其模型将由UITableViewController中点击的播放列表初始化。然后它会在另一个ViewController中显示我想要的东西。
UIPageViewController实现在我的应用程序中的工作方式如下:
ModelController - > RootViewController - > DataViewController(就像Apple的例子)
到目前为止,我已经完成了所有操作,但是我无法使用轻触的播放列表正确初始化模型。在我的播放列表TVC中,我有一个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,只是为了查看它是否可行但也没有运气。
任何人都可以帮助我如何从上面描述的segue方法初始化页面视图控制器的模型?或者对此事的任何其他想法都会非常欢迎。
谢谢!
答案 0 :(得分:0)
(我对你的控制器命名感到有点困惑......)
如果您想在RootViewController
中使用数组,那么您的方法基本上是正确的。您需要rvc中的属性并将其设置为prepareForSegue
。 E.g:
...
RootViewController *rvc = (RootViewController *)segue.destinationViewController;
[rvc.theArray initWithArray:arr];
...