2012/06/16更新

[XCODE] iPad専用のPopOverControllerを使ってみた

このエントリーをはてなブックマークに追加            

今日は、iPad専用のPopOverControllerの使い方を学んだので、ブログに残しておきたいと思います。


How to use PopoverController



PopOverControllerとは

以下画像のようなユーザーインターフェースです。画面の一部を覆うようなViewが出現して、その中で表示したり、ユーザーに選択してもらったりするユーザーインターフェースです。

このPopOverControllerは、PopOver部分以外をユーザーがタップすると消えるようになっています。そのため、モーダルViewよりもユーザーに使いやすい(ユーザーが行動を選択しやすい)インターフェースです。

パスワード入力などの必須操作の場合には、モーダルViewを使ってユーザー操作をブロックするのが良いかもですが、ユーザーに任意の操作を選択してもらう場合には、PopOverを使うのが良いのかと思います。

f:id:yoheiM:20110922185028p:image


PopOverには、多くのViewを表示出来ます。普通のView、ImageView、TableView、NavigationView、TabViewなどなど。今回は、普通のViewをPopOverに表示するようにしています。





PopOverを表示する

PopOverを表示するには、以下の内容を実装します。

1、PopOverに表示するViewControllerのインスタンスを作成する

2、(任意)PopOverの領域の大きさを設定する

3、PopOverのインスタンスを作成する

4、(任意)PopOverのdelegateを設定する

5、PopOverを表示する

実装例は、以下となります。今回は、画面左上のBarButtonをタップされた際に、PopOverが表示されるようにしています。

- (IBAction) tapAction : (id)sender { // senderは、UIBarButtonItem

  if (popController == nil) { // popControllerはフィールドに存在する変数

    // 1、PopOverに表示するViewControllerのインスタンスを作成する
    UIViewController *vc = [[[PopContentViewController alloc] init] autorelease];

    // 2、(任意)PopOverの領域の大きさを設定する
    //vc.contentSizeForViewInPopover = vc.view.frame.size;

    // 3、PopOverのインスタンスを作成する
    popController = [[UIPopoverController alloc] initWithContentViewController:vc];

    // 4、(任意)PopOverのdelegateを設定する。この場合、selfはUIPopoverControllerDelegateプロトコルを実装する必要がある。でも基本的には、delegateを使う用途はないかなぁ。
    // popController.delegate = self;

    // popOverに表示するViewがタップされた場合に、PopOverを消したいので、ジェスチャーを登録しておく
    UITapGestureRecognizer *tap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapContent:)] autorelease];
    [vc.view addGestureRecognizer:tap];
  }

  // 5、PopOverを表示する
  [popController presentPopoverFromBarButtonItem:sender 
  permittedArrowDirections:UIPopoverArrowDirectionAny 
  animated:YES];
}




PopOverの表示を消す

PopOverの表示を消すのは、カンタン!以下のような実装をすれば、popOverの表示を消す事が出来ます。

// PopOverを表示する際に、PopOverの中に表示するViewに設定したタップイベント用のメソッド。
- (void) tapContent:(id)sender {

  // PopOverの表示を消す
  [popController dismissPopoverAnimated:YES];
}




参考サイト

以下のリファレンスを参考にしました。ありがとうございます。

View Controller Programming Guide for iOS





最後に

iPad用のPopOverを使えるようになった(*´∇`*)カンタンに使えて、使いやすいインターフェースって良いですね。これから使っていこっと。







こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。