pushViewController и popToRootViewController
Мое приложение использует pushViewController для модального отображения контроллера навигации
[navigationController pushViewController:_viewController animated:YES];
Навигационный контроллер сделал кнопку
UIButton* backButton = [UIButton buttonWithType:101];
[backButton addTarget:self action:@selector(dismissView:) forControlEvents:UIControlEventTouchUpInside];
[backButton setTitle:@"Done" forState:UIControlStateNormal];
UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backItem;
[backItem release];
Когда нажата кнопка "Готово", я хочу вернуться в главное окно
-(void) dismissView: (id)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
//[self.navigationController popToViewController:_viewController animated:YES];
}
Но когда я нажимаю кнопку Готово, ничего не происходит. Это почему?
2 ответа
Решение
Пожалуйста NSLog в вашем dismissView
-(void) dismissView: (id)sender
{
NSLog(@"Hii....");
[self.navigationController popToRootViewControllerAnimated:YES];
//[self.navigationController popToViewController:_viewController animated:YES];
}
или отладить приложение с точкой останова.
UIButton* backButton = [UIButton buttonWithType:101];
Я уверен, что "101" является недействительным
+ (id)buttonWithType:(UIButtonType)buttonType
Вы должны использовать одно из следующих значений UIButtonType
typedef enum {
UIButtonTypeCustom = 0,
UIButtonTypeRoundedRect,
UIButtonTypeDetailDisclosure,
UIButtonTypeInfoLight,
UIButtonTypeInfoDark,
UIButtonTypeContactAdd,
} UIButtonType;
кроме этого теста ваш код помещает NSLog в ваш dismissView: чтобы увидеть, вызывается ли он