Three20: сделать ссылку TTTableItem на TTViewController - PullRequest
4 голосов
/ 18 ноября 2009

Я хочу, чтобы в моих элементах таблицы отображалась стрелка раскрытия и ссылка на другой экран «Подробности». Довольно стандартный. 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];
    }
}

Но мне нужно передать объект (не просто строку) в TTViewController при нажатии TTTableItem . Я знаю, что вы можете передать объект NSDictionary TTViewController с использованием: TTNavigator [[TTNavigator navigator] openURL: query: animated:] метод.

Однако, поскольку я пытаюсь открыть этот URL-адрес из TTTableItem, я не знаю, как использовать с ним метод openURL, где я могу передать объект запроса NSDictionary, поскольку все это принимает NSString Параметр «URL».

Я прочитал обсуждение здесь однако я действительно, очень хотел бы избежать необходимости изменять исходный код Three20. Если это может быть должным образом продлено, это было бы хорошо.

Какой самый простой способ заставить элемент таблицы открыть TTViewController и передать объект (например, NSDictionary) ?

Ответы [ 2 ]

3 голосов
/ 06 декабря 2009

Если вы посмотрите на http://three20.info/core/navigation, они покажут вам, как это сделать без переопределения метода didSelectObject.

В двух словах, вы можете назначить URL-адрес для объекта (через категорию для NSObject), который сопоставлен с URL-адресом контроллера, на котором размещена таблица. Затем обработчик может открыть другой URL, передавая соответствующие объекты в словаре запросов.

1 голос
/ 19 ноября 2009
...