次のようなストーリーボードがあります。
これがどのように機能するかです: は、その .m ファイルで次InitialSlidingViewController
のようにナビゲーション VC をインスタンス化します。topViewController
-(void)viewDidLoad {
[super viewDidLoad];
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Navigation"];
}
Navigation VC がインスタンス化されると、基礎となる Menu が作成され、それが underLeftVC として設定されます。これはECSlidingViewControllerを使用しています。これにより、Facebook と同様に、パン ジェスチャを使用するスライド メニューが作成されます。
NavigationVC のルート VC は、私の ItemsCDTVC です。+ ボタンをクリックすると、アクション シートがポップアップ表示され、カメラから写真を撮ったり、フォト ライブラリから写真を選択したりできます。ただし、ManageItemVC にモーダルでセグエして、選択した/撮ったばかりの画像を UIImageView に設定します。提示しようとすると、次のエラーがスローされます。
Warning: Attempt to present <ManageItemViewController: 0x81d52a0> on <InitialSlidingViewController: 0x8122ce0> whose view is not in the window hierarchy!
InitialSlidingVC が画面上になく、ItemCDTVC が画面上にあるため、どちらが正しいのですが、これを修正するにはどうすればよいですか?
下部のフレキシブル スペースの識別子を使用して、ストーリーボードにモーダル タイプ セグエを設定しました (タップしても何も起こらないので、ビジュアル セグエを作成するためにそれを選択しました)。これは、ItemCDTVC の私のセグエ コードです。
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// let's get the edited image
UIImage *image = info[UIImagePickerControllerEditedImage];
// but if for some reason we disable editing in the future, this is our safeguard
if(!image) image = info[UIImagePickerControllerOriginalImage];
if(image) {
self.pictureImageView.image = image;
[self performSegueWithIdentifier:@"addItemSegue" sender:self];
}
[self dismissViewControllerAnimated:YES completion:nil];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"addItemSegue"]){
ManageItemViewController *manageItemVC = (ManageItemViewController *)[segue destinationViewController];
manageItemVC.pictureImageView = self.pictureImageView;
}
}
モーダル VC を提示しようとすると失敗します。