6

ボタンをタップした後に表示される navController をセットアップしました。ただし、ボタンをタップすると、次のエラーが表示されます: " Warning: Attempt to present <UINavigationController>: 0xab5d9d0 on <MyApp: 0xadaa320> whose view is not in the window hierarchy!"

これを解決する方法を知っている人はいますか?私も Stackoverflow で何かを試しましたが、それは私の解決策ではありませんでした。

ここで、ナビゲーションコントローラーを開くための私のコード:

誰かがこのフォト ギャラリーを知っているかどうかはわかりませんが、知らない場合は、ここにプロジェクトがあります。

私のコード (MyApp.m):

#import MyApp.h
...
//some stuff
- (void)launchGalleryView
{



    MWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithDelegate:self];

    // Set browser options.
    browser.wantsFullScreenLayout = YES;
    browser.displayActionButton = NO;


    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:browser];

    NSMutableArray *photos = [[NSMutableArray alloc] init];
    MWPhoto *photo;
    photo = [MWPhoto photoWithFilePath:[[NSBundle mainBundle] pathForResource:@"callculator" ofType:@"jpg"]];
    photo.caption = @"The calculator is soo beateful...";
    [photos addObject:photo];

    self.photos = photos;

    [self presentModalViewController:navController animated:NO];
}

前もって感謝します。

編集:

それはリソースとコンパイル ソースにありますが、リソースでは赤 (ストーリーボード) であることがわかります。もしかしてこれが原因?

2 番目のコントローラー .h:

@class MyApp;

@interface Second : UIViewController <MWPhotoBrowserDelegate> {

}



@property (nonatomic, retain) MyApp* vC;

@end

2 番目のコントローラー .m:

#import "Second.h"
#import "MyApp.h"


@interface Second ()

@end

@implementation Second

@synthesize vC;
    //some stuff in here


//the action 
    - (IBAction)dothis:(id)sender {

        NSLog(@"launch the navcontroller");


        [self.vC launchGalleryView];

    }

MyApp.h:

#import "Second.h"


@interface myApp : UIViewController  <MWPhotoBrowserDelegate> {
    }

-(void)launchGalleryView;

NSArray *_photos;

ここに画像の説明を入力

新しい編集:

viewDidAppear でメソッド「launchGalleryView」を呼び出す必要があることがわかりましたが、ビューが読み込まれるたびに navcontroller を呼び出さずにこれを行うにはどうすればよいですか? 誰もこれを行う方法を知っていますか?

4

1 に答える 1

25

私はあなたのプロジェクトをチェックしました..適切な問題を整理できませんでした..

しかし、私はハックを試みましたが、うまくいきました..

この行を

[self presentModalViewController:navController animated:YES];

これ

[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentModalViewController:navController animated:YES];
于 2012-12-16T15:53:50.393 に答える