iPhone SDK - navController pushViewController - не отвечает - PullRequest
0 голосов
/ 28 апреля 2009

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

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

Проблема в том, что после того, как я переключаю кнопки с кнопок 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 Ответ

1 голос
/ 28 апреля 2009

Вам нужно отпустить свои кнопки, потому что вы их выделяете. Для этого я обычно использую 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...