0

我的应用程序是 TabBarController,我必须根据按下的选项卡采取不同的操作,所以,我委托 TabBarContoller,我明白了。

现在,如果按下包含 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 现在不存在

4

1 回答 1

1

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

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES];
于 2012-09-21T09:19:36.617 回答