2010-03-30 122 views
0

沒有給你我所有的代碼示例,我會盡快解決這個問題。viewWillAppear相關問題

有沒有發生過這樣的事情,讓你中的一個人得到viewWillAppear只有在它第一次顯示時才調用?

我有我的所有觀點的這個問題。

例如:當我的應用程序啓動時,我進入StartView這是一個主菜單。 (viewWillAppear被調用),然後我按下一個按鈕,將顯示一個導航控制器(viewWillAppear被調用)。然後我回到主菜單(它不會被調用),然後再次按下相同的導航控制器,它不會被調用。

這將是真棒,如果有人可以點的地方,我一直在尋找這一點,因爲現在看兩天......

此外,如果你需要更多的代碼示例,我可以給你一些。

對於進一步閱讀:

這就是我打電話給我的導航控制器:

PremierSoinsAppDelegate *AppDelegate = (PremierSoinsAppDelegate *)[[UIApplication sharedApplication] delegate]; 

UIView *newView = [AppDelegate.navigationController view]; 

[newView setFrame:CGRectMake(320.0f, 0.0f, 320.0f, 480.0f)]; 
[UIView beginAnimations:@"RootViewController" context:nil]; 
[UIView setAnimationDuration:0.3]; 
newView setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)]; 
UIView commitAnimations]; 

[AppDelegate.window addSubview:newView]; 
[AppDelegate.window makeKeyAndVisible]; 

這就是我如何展示我的菜單回:

PremierSoinsAppDelegate *AppDelegate = (PremierSoinsAppDelegate *)[[UIApplication sharedApplication] delegate]; 

UIView *newView = [AppDelegate.startViewController view]; 

newView setFrame:CGRectMake(-320.0f, 0.0f, 320.0f, 480.0f)]; 
UIView beginAnimations:@"StartViewController" context:nil]; 
UIView setAnimationDuration:0.3]; 
newView setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)]; 
[UIView commitAnimations]; 

[AppDelegate.window addSubview:newView]; 
[AppDelegate.window makeKeyAndVisible]; 

非常感謝。

回答

1

您可以在導航控制器中實現UINavigationControllerDelegate以傳播viewWillAppear:消息。實現消息是這樣的:

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    if ([viewController respondsToSelector:@selector(viewDidAppear:)]) { 
     [viewController viewDidAppear:animated]; 
    } 
}

請注意,這是viewDidAppear而不是viewWillAppear中的版本,但他們基本上是相同的

然而,你應該注意的是,你需要做這樣一個事實可能是你的控制器/視圖代碼中有其他錯誤的標誌,你可能想要重新編寫它問題給了我們更多的上下文來回答它。特別是,我假設在你給我們的代碼之外的某個地方,你正按照慣例爲導航控制器推送和彈出視圖控制器。

+0

請注意,如果您不推送和彈出UINavigationController的東西,您可能需要訪問蘋果開發者網站,並拿起他們關於如何使用導航控制器的示例。如果這有幫助,會提示一個。 – corprew 2010-03-30 17:38:57

+0

感謝您的回答。這就是爲什麼我在這裏問,我確信我的代碼有問題......但我不知道爲什麼。我從蘋果開發者連接(食譜和NavBar)看了一些樣品,但是沒有找到我能用當前代碼做的事情......:/ 我嘗試了一些你之前給我的代碼,但是我不' t想要強制應該以這種方式工作的東西:/ 謝謝 – TomShreds 2010-03-30 17:44:00

1

viewWill/DidAppear:僅在使用UINavigationController或UITabBarController(或者真正的任何system-provided-viewControlller管理類)來操作視圖時纔會調用。如果您手動執行此操作(就像您在第二個代碼段中執行的操作一樣,這些消息不會發送)

+0

我正在使用@interface RootViewController:UITableViewController {我應該如何做到這一點?請幫助我:/謝謝! – TomShreds 2010-03-30 17:25:35

+0

你應該閱讀UINavigationController;你會想使用 - [UINavigationController pushViewController:animated:]添加你的新視圖。 – 2010-03-30 20:39:12