2

我已經設置了void方法,如果用戶觸摸該按鈕,則從另一個類中調用該方法。 但是,我得到這個錯誤「誰的觀點不在窗口層次結構」,然後我發現這個:whose 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! 我不知道是否可以從viewDidAppear或從某個地方調用該方法,只有在以前在其他視圖中輕觸該按鈕時纔可以使用該方法。如果我在該方法中調用NSLog,它會在輸出中顯示我。只有navController的提交似乎不起作用。如果有人能幫助我,我會很高興。調用方法在viewDidAppear

我的方法:

- (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是一類真正簡化版,此事。

在此先感謝。

回答

0

我檢查你的項目..無法理清正確的問題..

但我想一個黑客,它的工作..

與替換此行

[self presentModalViewController:navController animated:YES]; 

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

謝謝sooooo多我有這個問題的日子 – MasterRazer

+0

喲!而不是回到根視圖控制器 - 從當前的根視圖控制器顯示它,而不是完全忽略問題是一個更好的主意。 – Abizern

+0

我同意..這只是一個黑客..不要認爲這是一個適當的解決方案..我沒有時間深入到這個問題。 – Shubhank

2

錯誤信息非常清晰 - 您試圖從此類中呈現控制器,但具有您按下的按鈕的類是其視圖位於視圖層次結構中的那個類。你可能需要使用按鈕來從類中提供它,或者返回到這個類,但是你要這樣做,然後在viewDidAppear之後調用它。

+0

如果你看看這個你看,我有CAL升它在另一個類:http://stackoverflow.com/questions/13777395/display-navigationcontroller-on-top – MasterRazer

+0

然後這happend http://stackoverflow.com/questions/13888062/whose-view-is-not- in-window-hierarchy-issue – MasterRazer

+0

@NoahRaissi,不確定你的意思。如果您想從該方法所在的類呈現導航控制器,則該視圖控制器的視圖需要顯示在屏幕上。你想要那個嗎?如果是這樣,按鈕方法可以設置一個標誌,你可以在viewDidLoad方法中檢查 - 如果標誌被設置,你可以調用這個方法。 – rdelmar

相關問題