iPhone SDK - navController pushViewController - не отвечает

У меня есть представление, в котором есть navigationController с двумя кнопками: START (по сути, кнопка входа в систему) и SETTINGS. Когда я нажимаю НАСТРОЙКИ, открывается окно настроек, которое закрывается, как и планировалось. Я могу нажимать на настройки, а затем возвращаться много раз без сбоев. Хорошо.

Теперь, когда пользователь нажимает кнопку START, я вызываю метод SHOWLOGOFFBUTTONS, чтобы изменить кнопки, которые появляются в верхней части представления в navController. Навигационная панель теперь должна иметь (и имеет) только кнопку ВЫХОД. Когда нажимается эта кнопка, я вызываю SHOWLOGINBUTTONS, чтобы у пользователя были те же кнопки входа в систему, что и раньше, чтобы он мог снова получить доступ к НАСТРОЙКАМ и СТАРТ (Вход).

Проблема в том, что как только я переключаюсь с кнопок ВХОД на кнопки ВЫХОДА обратно на КНОПКИ ВХОДА, кнопка НАСТРОЙКИ перестает работать. Метод SHOWSETTINGS запускается и запускается - ошибок не возникает, но представление не отображается.

Будем очень благодарны любой помощи!!

-(void)showLoginButtons{
    self.navigationItem.rightBarButtonItem=[[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStylePlain target:self action:@selector(showSettings)];
    self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc] initWithTitle:@"Start" style:UIBarButtonItemStylePlain target:self action:@selector(tryConnection)];
}

-(void)showLogoffButtons{
    self.navigationItem.rightBarButtonItem=nil;
    self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc] initWithTitle:@"Logoff" style:UIBarButtonItemStylePlain target:self action:@selector(resetConnectionAndScreen)];
}

-(void)showSettings{
    SettingsViewController *mySettingsViewController= [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
    iPhone_PNPAppDelegate *mainDelegate = (iPhone_PNPAppDelegate *)[[UIApplication sharedApplication] delegate];
    mySettingsViewController.settings=mainDelegate.settings;
    [[self navigationController] pushViewController:mySettingsViewController animated:YES];
    [mySettingsViewController release];
}

person Dutchie432    schedule 28.04.2009    source источник


Ответы (1)


Вам нужно отпустить кнопки, потому что вы их распределяете. Для этого я обычно использую автозапуск - попробуйте:

    -(void)showLoginButtons{
    self.navigationItem.rightBarButtonItem=[[[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStylePlain target:self action:@selector(showSettings)] autorelease];
    self.navigationItem.leftBarButtonItem=[[[UIBarButtonItem alloc] initWithTitle:@"Start" style:UIBarButtonItemStylePlain target:self action:@selector(tryConnection)] autorelease];
}

Также сделайте то же самое в своем методе showLogoffButtons.

person Sean    schedule 28.04.2009
comment
Спасибо за ответы, Шон - к сожалению, проблема не устранена. - person Dutchie432; 28.04.2009
comment
Вы устранили проблему? Просто интересно, почему я был выбран в качестве ответа, если проблема не устранена? :) - person Sean; 06.05.2009
comment
Умм - это было давно, поэтому мне нужно проверить, как у меня это работает. Если я правильно помню - проблема была двоякой, и вы меня ведете в правильном направлении. Спасибо, Шон! - person Dutchie432; 04.06.2009