這裏有很多代碼,它的確很多。有時候,segue控制器是:init'd,有時它是按原樣使用的。很明顯,在我初始化它之前將它設置爲對象,但在某些情況下,控制器無法按預期工作。似乎沒有任何關於prepareForSegue的文檔可以解決這個問題。什麼時候啓動segue控制器UIViewController:prepareForSegue:?
另外我可能會補充一些開發者甚至使用第三個選項,並簡單地重新定義它們呈現的是什麼。
我錯過了什麼?
示例 用於iPad的UIImagePickerController 需要:init(沒有照片加載到選取器中),在iPhone上按預期工作。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// This line is required for iPad functionality.
// UIImagePickerController *segueController = [((UIImagePickerController*)(segue.destinationViewController)) init];
// This line is all that is required on iPhone/iPod
UIImagePickerController *segueController = (UIImagePickerController*)segue.destinationViewController;
segueController.delegate = self;
segueController.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
}
另一個SO帖子:iOS7 Storyboard image picker not working :(
編輯
看來好像有可能是用的UIImagePickerController一個問題:利用initWithCoder,但我不知道如何來驗證。
你永遠不應該爲一個segue啓動一個控制器(即目標視圖控制器)。 segue爲你實例化控制器。如果您有一些特定的代碼片段,那麼您應該發佈它們。很難回答這樣的非特定問題。 – rdelmar
這張貼的原因是因爲interwebs散佈着矛盾。這就是沒有「特定」代碼的原因。我可以給你一個我知道的例子 - 將會修改。 – chrisp
您的編輯過於模糊而無用。每個對象都需要實例化以供您使用。有時用代碼完成,有時它是由故事板或xib完成的。如果你認爲你有一段實際的代碼顯示沒有實例化的對象的使用,那麼發佈它。我還建議你花更少的時間在網上,花更多的時間與蘋果的文檔 - 它更可靠。 – rdelmar