如何从 segue 方法初始化模型
Posted
技术标签:
【中文标题】如何从 segue 方法初始化模型【英文标题】:How to initialize model from segue method 【发布时间】:2013-01-30 11:56:23 【问题描述】:嗨,我有一个 UITableViewController,它由 Playlist 对象填充,它们包含 Song 对象。我想要的是当用户在我的 TVC 中点击播放列表名称时触发 UIPageViewController,我将通过在 UITableViewController 中点击的播放列表初始化其模型。然后它会在另一个 ViewController 中显示我想要的东西。
UIPageViewController 实现在我的应用中是这样工作的:
ModelController --> RootViewController --> DataViewController(就像苹果的例子)
到目前为止,我已经启动并运行了所有内容,但是我无法使用被点击的播放列表正确初始化模型。在我的 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,看看它是否可以工作,但也没有运气。
任何人都可以通过我上面描述的 segue 方法来帮助初始化页面视图控制器的模型吗?或者任何其他关于这个问题的想法都会非常受欢迎。
谢谢!
【问题讨论】:
【参考方案1】:(我对你的控制器命名有点困惑......)
如果您想使用RootViewController
中的数组,那么您的方法基本上是正确的。您需要 rvc 中的属性并将其设置为 prepareForSegue
。例如:
...
RootViewController *rvc = (RootViewController *)segue.destinationViewController;
[rvc.theArray initWithArray:arr];
...
【讨论】:
嗨 SAE。就是这样,模型数组不在 RootViewController 中。在模型控制器中(同样,我正在关注 Apple 的页面视图控制器实现类)。目前我从我的应用程序委托中创建了一个全局变量并且它正在工作,但我对它并不感到兴奋。 正如我所说:在RootViewController
类中创建一个 NSArray 属性,并像在我的代码示例中一样设置它。这是在视图控制器之间传递数据的正常方法。以上是关于如何从 segue 方法初始化模型的主要内容,如果未能解决你的问题,请参考以下文章
如何在 segue 中初始化 UIButton 的 titleLabel 字体?