【问题标题】:Three20: How to access the model in the next ViewController?Three20:如何在下一个ViewController中访问模型?
【发布时间】:2011-07-02 15:31:01
【问题描述】:
情况
我用 TTListDatasource(带有 TTModel)填充我的 TTTableViewController。
我的 didSelectObject 方法打开了一个 TTViewController。
问题
我想在 TTViewController 中显示更多信息。
1.问题:我应该交出数据源(并运行新查询)还是交出特定的 VO(包含所有信息)?
2.问:如何在新的TTViewController中访问数据源?
谢谢,
【问题讨论】:
标签:
iphone
objective-c
three20
【解决方案1】:
在您的 TTTableViewController 的 didSelectRowAtIndexPath: 定义中,使用您的 TTListDatasource 获取对相应对象的引用。然后将其传递给您的 TTViewController。这最好通过使用 TTViewController 的属性来完成,这样您就不必担心保留/释放。
@property (nonatomic, retain) TTModel *model;
然后在 didSelectRowAtIndexPath:
TTModel *model = //get the correct model
TTViewController *vc = [[TTViewController alloc] initHoweverYouWant];
vc.model = mode;
一些提示:TTViewController 听起来不太具有描述性,因为您(正确地)为您的类添加了前缀。也许 TTPhotoViewController 或其他东西可能更具描述性。总是在冗长的一面犯错:)
此外,我发现让我的 UITableViewController 子类实现 UITableViewDataSource 协议而不是创建单独的对象非常有用,除非出于完全相同的原因将在其他地方使用完全相同的数据源。如果您也使用核心数据,这与 NSFetchedResultsController 配合得更好。