這個問題非常頻繁,但我無法解決任何可用的答案。viewwillappear和viewdidappear不叫
我正在使用iOS 5.1。我的導航控制器是標籤欄視圖控制器中的一個選項卡。有一個tableview,其中選擇一行推動新的視圖控制器。
僅在選擇第二行時纔會發生此問題,並且有時會出現此問題。這並不經常。 推送視圖空白 - viewWillAppear
/viewDidAppear
未被調用。點擊導航欄的後退按鈕 - 根視圖的viewWillAppear
/viewDidAppear
也未被調用,使其成爲空白。
我以完全相同的方式推動選擇第一行/第二行的視圖。但問題只發生在第二行。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
switch (indexPath.row) {
case 0:
AViewController *aObj = [[AViewController alloc] init];
aObj.homeObj = self;
[self.navigationController pushViewController:aObj animated:YES];
[aObj release];
break;
case 1:
BViewController *bVCObj = [[BViewController alloc] init];
bVCObj.homeObj = self;
[self.navigationController pushViewController:bVCObj animated:YES];
[bVCObj release];
break;
default:
break;
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
viewDidLoad
被稱爲上推BViewController
,然而,viewWillAppear
和viewDidAppear
不會被調用。以下是我的viewDidLoad
:- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; NSLog(@"nav stack: %@", [self.navigationController viewControllers]); NSLog(@"nav stack: %@", [[self.navigationController visibleViewController] description]); //some initialization and call of methods }
這不是常規的。有時我會看到這種情況,直到我從後臺關閉應用程序並重新啓動它。但有時它工作得很好。我只是把我的視圖控制器推到nab堆棧。
正如我在評論中提到的那樣,它是標籤欄控制器中的常規導航控制器。
你是什麼意思'我的導航控制器是在標籤欄控制器的視圖控制器內'。 navcontroller應該是* TabBar視圖控制器之一,您不需要將其包裝在另一個viewController中。 – andreamazz
我的意思是導航控制器作爲標籤欄控制器的一部分。 :) –