2012-02-10 73 views
0

我知道viewWillAppear沒有在彈出/推送視圖上調用,但我真的需要這種方法。以下是我嘗試viewWillAppear不叫

我加入UINavigationControllerDelegate並採用

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
     [viewController viewWillAppear:animated]; 
} 

-(void)viewWillAppear 
{ 
    NSLog(@"Log"); 
} 

但viewWillAppear中依然沒有被調用

編輯

AppDelegate.m 

    self.navigationController = [[UINavigationController alloc]init]; 
    [self.window setRootViewController:self.navigationController]; 

    FirstView *fview = [FirstView]alloc]init]; 
    [self.viewController pushViewController:fview animated:YES]; 

FirstView.m 
.... 
-(void)viewWillAppear 
{ 
    NSLog(@"Logged"); 
} 

....

+0

「我知道viewWillAppear中不叫上彈出/推意見」你從哪裏得到這個虛假信息? – 2012-02-10 12:44:07

+0

@ Paul.s here http://www.idev101.com/code/User_Interface/UINavigationController/viewWillAppear.html – objlv 2012-02-10 12:46:11

+0

那麼,必須有一些不好的或舊的信息。我剛剛創建了一個新的'主 - 細節應用程序',在'viewDidAppear:'和'viewWillDisappear:'中放置了一個斷點,並且運行應用程序沒有修改,並且兩個斷點都被觸發了... – 2012-02-10 12:50:14

回答

6

的線索是在這裏:

[viewController viewWillAppear:animated]; 
} 

-(void)viewWillAppear 

你調用了一個參數的方法。但你的方法沒有。在Objective C中,這是完全不同的方法。

它應該是這樣的:

-(void)viewWillAppear:(BOOL)animated { 
    // blah 
} 
0

你有沒有窗口上的導航控制器? 粘貼appdelegate.m

我的工作代碼:

self.navController = [[[CustomNavigationController alloc] initWithRootViewController:[[[HomeViewController alloc] init] autorelease]] autorelease]; 
[self.window addSubview:navController.view]; 
[self.window makeKeyAndVisible]; 
+0

我已經將navController添加到自我。 window.rootViewController代替addSibview – objlv 2012-02-10 12:45:12

+0

請提供您的代碼示例(navcontroller創建,推送,彈出) – NeverBe 2012-02-10 12:55:13

+0

請查看更新的代碼。 – objlv 2012-02-10 13:14:21