Three20: TTLauncherView, использующий presentModalViewController, выбрасывающий setOriginalNavigatorURL нераспознанный селектор - PullRequest
0 голосов
/ 25 апреля 2011

Привет, я новичок на три20.Я получаю исключение "SettingsViewController setOriginalNavigatorURL нераспознанный селектор отправлен".Как использовать TTLauncherView, если в моем приложении уже есть контроллер навигации?

У меня есть UITableViewController внутри UINavigationController.Я хочу запустить лаунчер, когда в таблице выбрана строка «Настройки».Вот что я сделал:

- (void)tableView:(UITableView *)tableView 
        didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    switch ([indexPath row]){
      case 0:
        [self launchSettings];
        break;
    // ....
}

-(void)launchSettings
{

    TTNavigator* navigator = [TTNavigator navigator];
    navigator.persistenceMode = TTNavigatorPersistenceModeAll;
    TTURLMap* map = navigator.URLMap;
    [map from:@"*" toViewController:[TTWebController class]];
    [map from:@"tt://launcher/" toViewController:
     [SettingsViewController class]];


    if (![navigator restoreViewControllers]) {
        [navigator openURLAction:
         [TTURLAction actionWithURLPath:@"tt://launcher"]];
    }   
    [self presentModalViewController:[navigator openURLAction:
                                  [TTURLAction actionWithURLPath:@"tt://launcher"]] animated:YES];
}

У меня есть SettingsViewController: UIViewController с loadView, где я создал TTLauncherView и добавил его в качестве подпредставления в SettingsViewController:

- (void)loadView {
    [super loadView];
    TTLauncherView* launcherView = [[TTLauncherView alloc]
                                    initWithFrame:self.view.bounds];
    launcherView.backgroundColor = [UIColor blackColor];
    launcherView.columnCount = 4;
    launcherView.pages = [NSArray arrayWithObjects:
                          [NSArray arrayWithObjects:
                           [self launcherItemWithTitle:@"Google"
                                 image:@"bundle://safari_logo.png"
                                 URL:@"http://google.com"],
                           [self launcherItemWithTitle:@"Apple"
                                 image:@"bundle://safari_logo.png"
                                 URL:@"http://apple.com"]
                           , nil]
                          , nil];

    [self.view addSubview:launcherView];
    [launcherView release];
}

- (TTLauncherItem *)launcherItemWithTitle:(NSString *)pTitle
                       image:(NSString *)image URL:(NSString *)url {
    TTLauncherItem *launcherItem = [[TTLauncherItem alloc]
                       initWithTitle:pTitle
                       image:image
                       URL:url canDelete:YES];
    return [launcherItem autorelease];
}

Ответы [ 2 ]

0 голосов
/ 13 июня 2011

-ObjC -all_load отсутствует в других флагах компилятора. Они необходимы для использования Three20. см http://three20.info/article/2010-10-06-Adding-Three20-To-Your-Project

0 голосов
/ 25 апреля 2011

Синтаксическая ошибка?

 switch ([indexPath row]){
  case 0:
    launchSettings;  -> [self launchSettings];
    break;
...