Вызов метода в View Controller через TTURLAction? - PullRequest
0 голосов
/ 15 октября 2011

Я создал Менеджер загрузок, который в значительной степени является TTTableViewController, и его сопровождающая DataModel в значительной степени представляет собой ASINetworkQueue.

Итак, когда я создал функцию в моем контроллере представления, которая по очереди вызывает мой [dataModel addDownloadWithNameAndUrl: url:], и я получаю новую загрузку, добавляемую в NetworkQueue, которая запускается и отображается на TTTableViewController и обновляет индикаторы выполнения и прочее.

Я также сопоставил класс DownloadManagerViewController с URL-адресом, и я могу использовать TTNavigator, чтобы открыть диспетчер загрузки.

Теперь на мой вопрос. Есть ли способ, которым я могу вызвать URL для выполнения запрошенной функции без переключения на View Controller? Как я мог выполнить некоторые

Ответы [ 2 ]

0 голосов
/ 22 октября 2011

Ну, на самом деле все выглядит довольно просто, хотя мне потребовалось время, чтобы понять это.

Thee20 Navigator имеет метод:

- (id) viewControllerForURL: (NSString *) url;

Используя это, во всем приложении вы можете получить экземпляр вашего контроллера представления, который вы присвоили URL. Однако хитрость в том, что если вы установили URL как

[map @"url" toViewController: <class>];

каждый раз, когда вы получаете новый экземпляр Контроллера Представления.

В моем случае, однако, я хотел использовать уже созданный экземпляр контроллера представления, поэтому мне нужно настроить URL как sharedViewController .

Итак, я добавил в свой контроллер представления новый метод, который теперь я могу вызывать, не переключая на него пользовательский интерфейс.

0 голосов
/ 18 октября 2011

Вы пробовали смотреть в проекте samples / TTNavigatorDemo?У этого есть много примеров сопоставления URL.

Попробуйте использовать функцию [map from:<#(NSString *)#> toObject:<#(id)#> selector:<#(SEL)#>], например:

[map from:@"tt://order/send" toObject:_controller selector:@selector(sendOrder)];

Если мне понадобится контроллер в качестве объекта, я вместо этого инициализирую объект в делегате приложения, например:

 _playerController = [[PlayerController alloc] init];
 [map from:@"radio://player/(initWithStation:)" toViewController:_playerController transition:UIViewAnimationTransitionNone];
...