【发布时间】:2009-11-02 15:07:33
【问题描述】:
我在从 UINavigation 控制器中弹出 UIViewController 时遇到问题,即使对导航的引用似乎是正确的,并且 viewControllers 的计数显示正确的数字。
我有一个 UINavController 获取它的第一个 UIViewController 集,然后导航控制器显示在模式视图中:
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) 中,我在 viewDidLoad 方法中设置了一个取消和保存 UIBarButtonItem,以便取消按钮覆盖导航栏上的默认返回按钮。
- (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 方法中,我不断收到“EXEC_BAD_ACCESS”错误。方法是这样的:
-(IBAction)cancelDifficulty:(id)sender {
[(UINavigationController *)self.parentViewController popViewControllerAnimated:YES];
}//cancelDifficulty
我已经尝试将方法链接回实际拥有 navController 的类,以及使用 popToViewController:Animated:。如果我使用 NSLog 从 cancelDifficulty 方法中打印出 viewControllers 计数,它会显示正确的数字,但如果我尝试与之交互,我要么得到 EXEC_BAD_ACCESS,要么什么都没有发生。
【问题讨论】:
标签: iphone objective-c iphone-sdk-3.0