私のアプリは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 が現在存在しないことです