我有一個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