如何移动到popToViewController:来自tabBarController

时间:2012-09-21 09:12:50

标签: objective-c uinavigationcontroller uitabbarcontroller

我的应用程序是TabBarController,我必须采取不同的操作,具体取决于按下哪个选项卡,因此,我委托TabBarContoller,我得到了它。

现在,如果按下了导航控制器内容的选项卡,则根据数据库值,应显示的视图是第一个或最后一个,因此在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 个答案:

答案 0 :(得分:1)

只有在您完成了至少一次pushView 后才能使用popView。使用 NSLog 打印并查看 self.navigationController.viewControllers 中的对象,如果它包含某个对象,则适当地给出您的索引(在该范围内),我很困惑为什么你是做(UINavigationController *)viewController ,试试这个

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