Three20:创建一个到TTViewController的TTTableItem链接

时间:2009-11-18 18:43:35

标签: iphone objective-c three20

我希望我的表格项目显示披露箭头并链接到另一个“详细信息”屏幕。很标准。 Three20应该有助于此。

在我的TTListDataSource中,我正在做:

- (void)tableViewDidLoadModel:(UITableView *)tableView
{
    [super tableViewDidLoadModel:tableView];

    // Construct an object that is suitable for the table view system
    // from each domain object that we retrieve from the TTModel.
    for (Listing *result in [(id<SearchResultsModel>)self.model results]) {             
        NSString *url = [NSString stringWithFormat:@"myapp://listing", result.theID];           
        TTTableSubtitleItem *item = [TTTableSubtitleItem itemWithText:result.title subtitle:result.desc imageURL:result.imageURL defaultImage:nil URL:url accessoryURL:nil];
        [self.items addObject: item];
    }
}

但是当我点击TTTableItem时,我需要将一个对象(不仅仅是一个字符串)传递给TTViewController。我知道你可以将NSDictionary对象传递给 TTViewController使用:TTNavigator[[TTNavigator navigator] openURL: query: animated:]方法。

但是,由于我正在尝试从TTTableItem打开此URL,我不知道如何使用openURL方法,我可以传递查询NSDictionary对象,因为它全部采用NSString“URL”参数。

我阅读了讨论here但是我真的非常希望避免修改原来的Three20代码。如果可以适当延长,那就没问题了。

最简单的方法是让我的桌子项目打开TTViewController并传递一个对象(例如NSDictionary

2 个答案:

答案 0 :(得分:3)

如果您查看http://three20.info/core/navigation,他们会告诉您如何在不重写didSelectObject方法的情况下执行此操作。

简而言之,您可以为对象分配URL(通过NSObject的类别),该URL映射到托管表的控制器的URL。然后,处理程序可以打开另一个URL,传递查询字典中的相应对象。

答案 1 :(得分:1)