1

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がロードされているかどうか(現在表示されているビュー)を確認するにはどうすればよいですか?

4

1 に答える 1

1

ドキュメントには、detailViewが表示ビューの子になることが示されています。提示するビューコントローラではmodalViewController、提示されたビューを指すようにプロパティが更新されます。また、モーダルビューは、現在のビューparentViewControllerを指すように更新されます。

したがって、これらのプロパティをチェックして、モーダルビューが表示されているかどうかを確認できます。

于 2012-01-04T12:54:55.440 に答える