iPad 用アプリの開発を開始。UISplitViewController について調査した(そのおぼえ書き)。
Split View-based Application
Xcode のテンプレートから UISplitViewController を選ぶ。
実行するとこんな画面が表示される。
縦にするとポップオーバー表示になる。
構成
構成イメージはこんな感じ。
UISplitViewController を構成するコントローラの指定はInterface Builder のインスペクタで設定してある。
UISplitViewController.viewControllers の中身はこう。
(
"<UINavigationController: 0x4d2e290="">",
"<DetailViewcontroller: 0x4d2e5f0="">"
)
UISplitViewController.view の構成はこう。
UIView
|-UILabel
|-UIToolbar
|-UIToolbarTextButton
|-UIPushButton
UILayoutContainerView
|-UINavigationTransitionView
|-UINavigationBar
|-UINavigationItemView
なるほど。
RootViewController は UINavigationController に載っているので、階層的なビューの切り替えができるようになっている。この辺りはこれまでの iPhoneアプリと同じようにできる。試しに SubViewController を良いして遷移させてみた。
RootViewController.m
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
detailViewController.detailItem = [NSString stringWithFormat:@"Row %d", indexPath.row];
UIViewController* viewController = [[SubViewController alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
}
画面の回転により UISplitViewControllerDelegateのメソッドが呼び出される。
– splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
横 => 縦 により、左側のビューが隠れる時
– splitViewController:willShowViewController:invalidatingBarButtonItem:
縦 => 横 により、左側のビューが表示される時
– splitViewController:popoverController:willPresentViewController:
ポップオーバーが表示される時
ソースコード
サンプルはこちら。
SplitViewBaseSample at 2011-01-05 from xcatsan/iOS-Sample-Code - GitHub