2

voidユーザーがボタンに触れた場合に別のクラスから呼び出されるメソッドを設定しました。ただし、「who the view is not in window hierarchy」というエラーが表示された後、これが見つかりました: which view is not in the window hierarchy。以下のメソッドを呼び出したいだけですが、このエラーが発生し、navigatoncontroller. 以前に他のビューでボタンがタップされた場合にのみ機能する、またはどこかからメソッドを呼び出すことが可能かどうかはWarning: Attempt to present <UINavigationController: 0xae34f10> on <ViewController: 0xae1f200> whose view is not in the window hierarchy! わかりません。メソッドでviewDidAppeara を呼び出すと、出力に が表示されます。の提示のみが機能していないようです。誰かがこれを手伝ってくれたら嬉しいです。NSLogNSLognavController

私の方法:

- (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:@"calculator" ofType:@"jpg"]];
    photo.caption = @"The calculator is soo beauteful...";
    [photos addObject:photo];

    self.photos = photos;

    [self presentModalViewController:navController animated:YES];

}

言い忘れただけです: MWPhotoprowser は、実際には問題にならないクラスです。

前もって感謝します。

4

2 に答える 2

2

エラー メッセージは非常に明確です。このクラスからコントローラを提示しようとしていますが、押されたボタンを持つクラスは、ビューがビュー階層にあるクラスです。ボタンを使用してクラスから表示するか、このクラスに戻ってそれを行ってから、viewDidAppear の後に呼び出す必要があります。

于 2012-12-16T00:34:14.430 に答える
0

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

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

この行を

[self presentModalViewController:navController animated:YES];

これ

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