如何从segue方法初始化模型

时间:2013-01-30 11:56:24

标签: uiviewcontroller model uitableview uipageviewcontroller uistoryboardsegue

嗨我有一个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方法初始化页面视图控制器的模型?或者对此事的任何其他想法都会非常欢迎。

谢谢!

1 个答案:

答案 0 :(得分:0)

(我对你的控制器命名感到有点困惑......)

如果您想在RootViewController中使用数组,那么您的方法基本上是正确的。您需要rvc中的属性并将其设置为prepareForSegue。 E.g:

...
RootViewController *rvc = (RootViewController *)segue.destinationViewController;
[rvc.theArray initWithArray:arr];
...