2012-09-21 29 views
0

我有我的應用程序是一個TabBarController,我必須採取不同的行動取決於哪個選項卡被按下,所以,我委託TabBarContoller,並得到它。如何移動到popToViewController:從tabBarController

現在的情況下,其內容物的NavigationController被按下時,根據一個數據庫值時,應該示出的是第一個或最後一個的視圖,所以在Tabs.m選項卡:

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
NSArray *viewArrays = [(UINavigationController*)viewController viewControllers]; 

switch (tabBarController.selectedIndex) { 

    case 3: 
    { 
     NSString *query = @"SELECT * FROM login"; 
     sqlite3_stmt *statement = [[Database alloc] select:query]; 

     if(sqlite3_step(statement) == SQLITE_ROW) { 
      [(UINavigationController*)viewController popToViewController:[viewArrays objectAtIndex:1] animated:YES]; 

     } 
     sqlite3_finalize(statement); 
     break; 
    } 
    default: 
     break; 
} 

}

的問題是objectAtIndex:1不存在,現在

回答

1

可以popView只有當你做了pushView ATLEAST一次。使用的NSLog打印和看到裏面self.navigationController.viewControllers的對象,如果它包含了一些對象,然後給予適當的索引(範圍內),我很困惑,爲什麼你在做(UINavigationController的*)的viewController,嘗試這個代替

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES]; 
+0

的self.navigationController.viewControllers是空的:視圖(空) ,我想這是因爲我在一個tabBarController,而不是在導航控制器,可以嗎? – user1256477

+1

其原因是因爲你沒有推動任何視圖,所以有任何看法可以彈出 – Neo