2つのtabBarItemsを持つtabBarControllerアプリがあります。各viewControllersにはtableViewが含まれています。
didSelectRowAtIndexPathで、次のコード行を含む詳細ビューを読み込んでいます。
detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:[NSBundle mainBundle]];
detailViewController.selectedDetail = [selectedDetail valueForKey:@"cardText"];
detailViewController.selectedCardTitle2 = [selectedCardTitle valueForKey:@"cardTitle"];
detailViewController.selectedRow2 = [self.tableViewInbox indexPathForSelectedRow];
detailViewController.detailCardsArray = allCards;
detailViewController.detailAllFetchedCards = allFetchedCards;
detailViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[inboxViewController presentModalViewController:detailViewController animated:YES];
問題は、detailViewがロードされ(実際に表示されているviewControllerです)、他のtabBarItemに変更すると、detailViewが破棄されないことです。つまり、didSelectRowAtIndexPathが呼び出された場合、detailViewを再度ロードすることはできません。
私のAppDelegateにはメソッドがあります
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
このメソッドでは、detailViewが実際に表示されているviewControllerであるかどうかを確認します。
そうであり、tabBarItemが変更された場合は、DetailViewを閉じます。
今私の質問は:detailViewがロードされているかどうか(現在表示されているビュー)を確認するにはどうすればよいですか?