我的应用程序是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现在不存在
答案 0 :(得分:1)
只有在您完成了至少一次pushView 后才能使用popView。使用 NSLog 打印并查看 self.navigationController.viewControllers 中的对象,如果它包含某个对象,则适当地给出您的索引(在该范围内),我很困惑为什么你是做(UINavigationController *)viewController ,试试这个
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES];