0

У меня есть представление, которое имеет navigationController с двумя кнопками, START (по сути, кнопка входа) и SETTINGS. Когда я нажимаю SETTINGS, появляется окно настроек и отклоняется, как и планировалось. Я могу нажать на настройки, а затем многократно щелкнуть, без каких-либо сбоев. Хорошо.iPhone SDK - navController pushViewController - не отвечает

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

Проблема заключается в том, что после того, как я нажму кнопку «Кнопки» от кнопок LOGIN до кнопок LOGOFF до КНОПКИ LOGIN, кнопка SETTINGS перестает работать. Метод 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]; 
} 

ответ

1

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

-(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.

+0

Спасибо за ответы, Шон - к сожалению, проблема по-прежнему сохраняется. – Dutchie432

+0

Вы решили проблему? Просто интересно, почему я был выбран в качестве ответа, если проблема все еще сохраняется? :) – Sean

+0

Умм - прошло какое-то время, поэтому мне нужно будет проверить, как я работаю. Если я правильно помню - проблема была в 2 раза, и вы привели меня в правильном направлении. Спасибо, Шон! – Dutchie432