У меня проблемы с подключением UIViewController к контроллеру UINavigation, хотя ссылка на навигацию кажется правильной, а подсчет viewControllers показывает правильное число.
У меня есть UINavController, который получает свой первый набор UIViewController, а затем контроллер Nav представлен в модальном представлении:
workoutNavController.viewControllers = [NSArray arrayWithObject:manageWorkoutController];
[self presentModalViewController:workoutNavController animated:YES];
Этот первый UIViewController (manageWorkoutController) имеет табличное представление, и при касании одной из ячеек второй UIViewController помещается в контроллер навигации:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
switch (indexPath.row) {
case 0:
//do nothing no nav-view here
break;
//DIFFICULTY
case 1:
workoutDifficultyController.title = @"Workout Difficulty";
[(UINavigationController *)self.parentViewController pushViewController:workoutDifficultyController
animated:YES];
break;
//DATE
case 2:
workoutDateController.title = @"Workout Date";
[(UINavigationController *)self.parentViewController pushViewController:workoutDateController
animated:YES];
break;
default:
break;
}//end switch
}//end didSelectRowAtIndexPath
Во втором UIViewController (workoutDifficultyController) я настраиваю UIBarButtonItem для отмены и сохранения в методе viewDidLoad, чтобы кнопка отмены заменяла кнопку возврата по умолчанию на панели навигации.
- (void)viewDidLoad {
UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelDifficulty:)];
[self.navigationItem setLeftBarButtonItem:cancelButton];
[cancelButton release];
UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(saveDifficulty:)];
[self.navigationItem setRightBarButtonItem:saveButton];
[saveButton release];
[super viewDidLoad];
}//end viewDidLoad
Моя проблема в том, что в методе cancelDifficulty, где я хочу извлечь текущее представление из контроллера nav и вернуться назад, я получаю ошибку 'EXEC_BAD_ACCESS'. Это метод:
-(IBAction)cancelDifficulty:(id)sender {
[(UINavigationController *)self.parentViewController popViewControllerAnimated:YES];
}//cancelDifficulty
Я пробовал метод цепочки обратно к классу, который фактически владеет navController, а также с использованием popToViewController: Animated :. Если я использую NSLog, чтобы распечатать счетчик viewControllers из метода cancelDifficulty, он показывает правильное число, но если я пытаюсь взаимодействовать с ним, я либо получаю EXEC_BAD_ACCESS, либо ничего не происходит вообще.