Hatena::Groupxn--272ax3f

iOSアプリ開発勉強会#6

iOSアプリ開発勉強会#6

第12章 UINavigationController

f:id:ninjinkun:20120313134357p:image

UINavigationBar

f:id:ninjinkun:20120313134356p:image
  • UINavigationControllerはUINavigationBarを持つ
  • 各UIViewControllerはUINavigationItemを持つ
    • rightBarButtonItem
    • leftBarButtonItem
    • title
    • titleView
  • UINavigationBarはUINavigationItemのコンテンツを表示する

UIControl

  • Target Action
  • SEL型と@selector(method)
    • どの様な文字列でも書ける
    • メソッドがあるかは確かめない
      • 確認する場合はrespondToSelector:

UIViewControllerの追加

  • DetailViewControllerを実装する

UINavigationControllerによるナビゲーション

f:id:ninjinkun:20120313134358p:image
  • UINavigationControllerは動的にViewControllerを追加していく
    • UITabBarControllerは起動時に全て追加しておかなければならない
  • UIViewControllerはnavigationControllerプロパティを持っている
    • 自身がUINavigationControllerの中にあるときにセットされる
  • pushViewController:animated:を送信するとpushされる

ViewController間でのデータの受け渡し

  • UIViewController間でのデータの受け渡しはどうするのか
  • 相手のインスタンスプロパティ経由でset
  • モデルを受け渡すと良い
  • 全データをルートViewControllerに持たせて、一部を次のViewContrllerに渡す
    • ドリルダウン系には最適

ビューの表示と消去

  • viewWillDisapperar:
    • ビューが消えるときに呼ばれる
    • モデルの変更の更新をするならここ
    • スーパークラスの呼び出しも忘れずに
  • viewWillAppear:
    • ビューが現れるときに呼ばれる

13.1 画像の表示とUIImageView

UIImageView

  • contentMode
    • Aspect Fitにしておくとぴったり表示してくれる

13.1.1 写真撮影とUIImagePickerController

  • UIImagePickerContrllerを表示
  • isSourceTypeAvailable:でカメラをサポートしているか問い合わせ
  • モーダルとして表示
    • presentModalViewController:animated
  • UIImagePickerContrllerDelegate
    • imagePickerController:didFinishPcikingMediaWIthInfoで写真を受け取り
  • imageViewに画像のインスタンスを保存すると…?
    • 写真が出たり出なかったりする
    • メモリ警告が出た際にViewが破棄されて写真が消える

ImageStore

  • 画像を保存するストア
  • NSMutableDictionaryをラップしたシングルトン

UUID

  • 一意となるキーを生成したい
  • CFUUIDCreate()
  • CFUUIDRefからCFStringRefを生成
  • NSStringにキャスト可能
    • toll-free bridging
    • CとObj-Cで同じ構造体を使っているのでそのまま渡せる

キーボードの消去

  • 他の場所をタップしたときにキーボードが消えて欲しい
  • viewをUIControlにする
  • viewにendEditiong:を送信する