UIPopoverControllerでTableViewを表示させる

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

iPadで使えるボタンを押すとふわっと吹き出しが出てくるUIPopoverControllerの実装方法です。UIPopoverControllerの中身は別Viewで用意しておく必要がありますが、xibを作らずにプログラムだけで実装可能です。今回はテーブルビューを表示するようにしています。

SPONSOR

読み込み先のテーブルビューを作る

先に、ポップアップの中に表示させるテーブルビューの準備から。

DLViewController.h

#import <UIKit/UIKit.h>
@interface DLViewController : UITableViewController
@end

DLViewController.m

#import "DLViewController.h"

@interface DLViewController ()

@end

@implementation DLViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view.
}

//以下テーブル表示メソッド
- (NSInteger)tableView:(UITableView *)tableView
 numberOfRowsInSection:(NSInteger)section {
    return 10;
}

//セルの高さ
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 30;
}

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *SimpleTableIdentifier= @"SimpleTableIdentifier";
	UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];

    if(cell==nil){
        cell=[[UITableViewCell alloc]
              initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:SimpleTableIdentifier];
    }

    cell.textLabel.text=@"a";

    return cell;
}

//セルがクリックされた時の処理
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

}

そして、ポップアップを呼び出すView。

testView.h

@interface testView : UIViewController<UIPopoverControllerDelegate>{
   UIPopoverController *popoverController;
   IBOutlet UIButton *popbutton;
}
- (IBAction) tapAction:(id)sender;

popbuttonはUIButtonですが、このボタンがタップされたときにポップオーバーを表示させます。ですので、あらかじめボタンとtapAction、popbuttonもそれぞれ紐付けておいてください。

testView.m

#import "DLViewController.h"

- (IBAction) tapAction:(id)sender
{
    // 表示するViewController
    DLViewController *svc = [[DLViewController alloc] init];
    popoverController = [[UIPopoverController alloc] initWithContentViewController:svc];
    popoverController.delegate = self;

    // Popoverを表示する
    [popoverController presentPopoverFromRect:popbutton.bounds
                                       inView:popbutton permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
}

というわけで、これを実行するとこのようにポップアップが表示されました。

iPhoneアプリ開発のTips一覧はこちら

効率のいいiOSプログラミング習得法

独学でプログラミングをはじめてもう16年。
なかなか勉強が進まない人のために記事を書きました。

フリーランスエンジニアの稼ぎ方

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

PROFILE

プロフィール

入江 慎吾
自分が作ったサービスで生きていく。同じゴールを目指すサービス開発集団「入江開発室」を運営(現在約280名) / 個人間スキルシェアサービス「MENTA」は1ヶ月と10日で売上100万円を達成。1日で100社が利用した「JobTag」など多数開発
(詳しいプロフィール)

PRODUCT

イリテクで開発したプロダクト

RELATION

関連する記事

SPONSOR

TAG

タグから記事をさがす