Cocoa勉強会#51-iOS 5で搭載されたページコントローラー
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Cocoa勉強会#51-iOS 5で搭載されたページコントローラー

  • 811 views
Uploaded on

Cocoa勉強会#48 ...

Cocoa勉強会#48
2012/3/17
全画面、ファイル履歴、Lionの新しい機能に対応する
新居雅行

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
811
On Slideshare
811
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. iOS 5で搭載された ページコントローラー Masayuki Nii Cocoa Study #51 2012/3/17 12年3月17日土曜日 1
  • 2. Agenda ページビューの階層化 UIPageViewControllerとテンプレート 動作を確認する 利用例 12年3月17日土曜日 2
  • 3. ビューコントローラの階層化 従来からある複数のビューコントローラ • • • • ナビゲーションコントローラ、タブコントローラ 複数のビューコントローラを持つビューコントローラ=コンテナビューコントローラ 1ページを複数のビューコントローラで管理する iOS 5で、汎用的に利用できるようになった UIViewControllerクラスに追加されたメソッド • • • • • • • -addChildViewController: -removeFromParentViewController transitionFromViewController:toViewController:duration:options:animations:com pletion: -willMoveToParentViewController: -didMoveToParentViewController: -automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers 独自にUIViewControllerの継承クラスを作るときにはさまざまなメソッドのオーバライ ドができる 12年3月17日土曜日 3
  • 4. ビューコントローラの階層化 UIViewControllerに追加されたプロパティ • • childViewControllers:所属しているビューコントローラの配列 parentViewController:自分の親のビューコントローラ その他注意点 • • 12年3月17日土曜日 -presentViewController:animated:completion:によってビューを 表示 -presentModalViewController:animated:メソッドは使わずに、 上記のメソッドを使うようにと記述されている 4
  • 5. ビューコントローラの階層化を利用したクラス UIPageViewControllerによるページめくりビュー • • iOS 5より登場したクラスで、ページめくり機能を提供するビューコントローラ 1つ1つのページが「ビューコントローラによって管理されるビュー」 UIPageViewControllerクラス • • • • -initWithTransitionStyle:navigationOrientation:options::初期化メソッド -setViewControllers:direction:animated:completion::ビューコントローラの登録 dataSource:データソース/delegate:デリゲート/viewControllers:登録されているビュー コントローラ/gestureRecognizers:ジェスチャー navigationOrientation:方向/spineLocation:スピンの位置/transitionStyle:ビュー移動の 形式/doubleSided:2面表示 UIPageViewControllerDataSourceクラス • • • • • 12年3月17日土曜日 -pageViewController:viewControllerBeforeViewController::次のビューコントローラを返す -pageViewController:viewControllerAfterViewController::前のビューコントローラを返す UIPageViewControllerDelegateクラス -pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:: ページ移動後に呼び出される -pageViewController:spineLocationForInterfaceOrientation::方向に応じたスピン位置を返す 5
  • 6. さて、ページビューを使ってみよう! とはいえ、これはAPIだけだとさっぱりわからん • サンプルプログラムもない プロジェクトのテンプレートに「Page-Based Application」がある • • • 12年3月17日土曜日 シンプルな動作である これを開いてみてビックリ! ある独特なパターンを想定したクラスだった 6
  • 7. 「Page-Based Application」によるアプリケー ションのオブジェクト関係 UIApplicationMain UIApplication 生成 AppDelegate プロパティ参照 delegate MainStoryboard window RootViewController rootViewController UIWindow viewControllers iPad画面 window DataViewController modelController delegate dataSource PageViewController viewControllers ModelController DataViewController DataViewController 12年3月17日土曜日 7
  • 8. 動作をチェックする BookViewer_Starterプロジェクト • メソッドのエントリーにNSLogを入れてある 次のような動作を調べる • • • • • 12年3月17日土曜日 iPadシミュレータを縦長にしておく Check! 起動して縦長の1ページ目が出るまでの動作 Check! 1ページ分めくったときの動作 Check! 回転させる Check! 横長で1ページをめくる 8
  • 9. 作成例 PhotoAlbum • アプリケーションバンドル内の写真をページとして表示する BookViewer • • • • サンプルのPDF:http://msyk.net/ios/sample1.pdf いわゆるPDFビューアで、SfariよりPDFを供給する APIは拡大するとやや荒れるもの ブラウザから開く これらのサンプルは勉強会の中だけにしてください 配布はしないでください 12年3月17日土曜日 9
  • 10. まとめ ページビューは「APIの問題」ではなく、一定のオブ ジェクトの配置を想定した「パターンを持つクラス」で あった 12年3月17日土曜日 10