2012-12-15 19 views
6

ボタンをタップした後に表示されるnavControllerを設定しました。しかし、私がボタンをタップすると、「Warning: Attempt to present <UINavigationController>: 0xab5d9d0 on <MyApp: 0xadaa320> whose view is not in the window hierarchy!ビューのウィンドウ階層に問題がありません

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

ここnavigationcontrollerを開くための私のコード:

私は、誰かがこのフォトギャラリーを知っていれば知らないが、そうでない場合は、hereはプロジェクトです。

私のコード(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]; 
} 

感謝。

編集:

それはrecourcesで、コンパイルのソースではなく、あなたはそれが(絵コンテ)赤であることが確認できたリソースです。これが原因だろうか?

第2コントローラ.H:

@class MyApp; 

@interface Second : UIViewController <MWPhotoBrowserDelegate> { 

} 



@property (nonatomic, retain) MyApp* vC; 

@end 

Secnondコントローラ.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; 

enter image description here

NEW EDIT:

私はviewDidAppearで「launchGalleryView」メソッドを呼び出す必要がありますが、どのように私は毎回ビュー負荷をからNavControllerを呼び出さずにこれを行うことができますことを発見?誰もこれを行う方法を知っていますか?私はあなたのプロジェクトをチェックし

+0

rを現時点で最上位ではないコントローラから削除します。 が一番上にあり、何も提示していないことを確認してください! – yuf

+0

どうすればいいですか? – MasterRazer

+0

[self dismissViewControllerAnimated:NO completion:nil]を呼び出すとどうなりますか?現在のModelViewControllerの前に?何が起こるのですか? – yuf

答えて

25

は..

適切な問題を整理することができませんでしたが、私はハックを試してみました、それが働いた。..

はでこの行を置き換え

[self presentModalViewController:navController animated:YES]; 

私はcontrolleを提示しようとすると、私はエラーを取得するこの

[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentModalViewController:navController animated:YES]; 
+1

ありがとうございました:D;) – MasterRazer

+0

presentModalViewControllerはiOS 6.xで廃止されました。別の解決策がありますか? –

+0

http://stackoverflow.com/questions/12507455/a-lot-of-functions-are-deprecated-ios-6 – Shubhank

関連する問題