我有一个UITabBarConroller,我用它来切换3个不同的视图。这一切都完美。在我的标签之一,我在添加一个按钮,所谓的“添加”,我增加了一个出口这一点,以及它看起来像下面的IBAction为方法:iPhone SDK:切换到一个视图,然后回到以前的视图错误
// Method used to load up view where we can add a new ride
- (IBAction)showAddNewRideView {
MyRidesViewController *controller = [[MyRidesViewController alloc] initWithNibName:@"AddNewRide" bundle:nil];
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:controller animated:YES];
[controller release];
}//end showAddNewRideView
这目前工作正常,并加载我的AddNewRide nib文件。但是,一旦该视图加载,我有一个取消按钮,点击后,我想返回到前一个视图。所以,我想我会只是做上述的相反,使用下面的方法,将加载回我以前的笔尖:
- (IBAction)cancelAddingNewRide {
MyRidesViewController *controller = [[MyRidesViewController alloc] initWithNibName:@"MainWindow" bundle:nil];
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:controller animated:YES];
[controller release];
}//end cancelAddingNewRide
但是,它试图加载主窗口笔尖,程序崩溃,我也得到出现以下错误:
2010-05-05 20:24:37.211 Ride[6032:207] *** -[MyRidesViewController cancelAddingNewRide]: unrecognized selector sent to instance 0x501e450
2010-05-05 20:24:37.213 Ride[6032:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[MyRidesViewController cancelAddingNewRide]: unrecognized selector sent to instance 0x501e450'
所以,我有点失落,为什么它会以单向方式工作,而不是其他方式。
这是事实,但不是推荐的方法。当前的viewController不应该自行解散,调用它的类应该解雇它 – Rudiger 2010-05-06 04:57:25
Apple的文档说:“父视图控制器负责解除它使用presentModalViewController:animated:方法呈现的模式视图控制器。但是,如果您在模态视图控制器本身上调用此方法,则模式视图控制器会自动将消息转发给其父视图控制器。“虽然模态控制器不负责任,但并不表示它不应该自行解散。请问苹果是否在其他地方记录这个文件? – 2010-05-06 05:18:43
Yay!这绝对有效,并解决了我的问题。但是,你看到这不是一个好方法吗? – 2010-05-06 05:33:53