15
iPhone OS 3.0で 変更されたテーブルビュー 新居雅行/[email protected] Cocoa勉強会 関東#36 2009年9月5日 1

Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

Embed Size (px)

Citation preview

Page 1: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

iPhone OS 3.0で変更されたテーブルビュー

新居雅行/[email protected]

Cocoa勉強会 関東#362009年9月5日

1

Page 2: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

before my presentation

“CoolNotify”•告知ソリューション• 団体ごとにページを用意• 告知内容をWeb設定•そのうち一般公開•サポート予定• アンケート、出欠、拍手

2

Page 3: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

before my presentation

“CoolNotify”•告知ソリューション• 団体ごとにページを用意• 告知内容をWeb設定•そのうち一般公開•サポート予定• アンケート、出欠、拍手

2

Page 4: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

agenda

•iPhoneでのテーブルビュー•v3.0での変更点

3

Page 5: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

iPhoneのテーブルビュー

•表計算式の「セル」ではない• 列の概念を持たないテーブル• セル=行•スクロールする事が当然の機能• 複雑なビュー階層は見えていない•テーブルビュー自体をInterface Builderでサポート• 加えて、セルについてもInterface Builderでサポート

4

Page 6: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

テーブルを管理するクラス

•UITableView ← UIView• セルに分かれているが、セルのコンテナを持つ•UITableViewController ← UIViewController• tableViewプロパティ、形式を指定した初期化メソッドが追加されている

• IBではviewから接続することで、tableViewプロパティも参照できる

•UITableViewCell ← UIView• セルそのもののクラス•UITableViewDataSource•UITableViewDelegate ← UIScrollViewDelegate5

Page 7: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

データソース

•テーブルに表示するデータを供給するオブジェクト• UITableViewDataSourceプロトコルを組み込んだクラスのインスタンスをテーブルビューに教えておく事で、そこから必要な情報を取り出す

•必須のプロパティ• numberOfRowsInSection/セル数• cellForRowAtIndexPath/1つのセルを返す• テーブルビュー自体のキャッシュの仕組みを使う• その他定義可能なメソッドはたくさんある6

Page 8: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

セル

•基本的には生成してやる必要がある• IBで定義もできる→環境設定的な機能の場合•セル内のデータの配置• 自由な配置が可能(UIViewだから)• 決められたスタイルの利用が可能(v3.0で拡大)

7

Page 9: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

セルクラスの利用

•iPhone OS 3.0でけっこう変わったところ•deprecatedなプロパティ• text, textAlignment, textColor, lineBreakMode, font, image, selectedTextColor, selectedImage

•なくなった機能はどうする?• テキスト表示はUILabelクラスのtextLabelプロパティ• もう1つのテキストパートはdetailTextLabel• 画像はUIImageViewクラスのimageViewプロパティ•要はビューの集合という考え方を徹底させた8

Page 10: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

プログラム例

•UITableViewCell *cell = [...生成と初期化...];• v2.0• cell.text = @"Oh my god!";• v3.0• cell.textLabel.text = @"Shine on me!";• cell.detailTextLabel.text = @"Absolutely!";• return cell;

9

Page 11: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

セルの生成•initWithFrameはdeprecated• initWithStyle: reuseIdentifier: を使う• 最初の引数に定数を指定(図セルの順に対応)• UITableViewCellStyleDefault、UITableViewCellStyleSubtitle、

UITableViewCellStyleValue1、UITableViewCellStyleValue2

• textLabel, detailTextView, imageViewの配置に注目

10

Page 12: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

その他の話題

•アクセサリビュー• セルの右端にアクセサリ領域を確保• おなじみなものは定数を指定すれば良い• 画像を指定すれば任意の画像を表示•編集機能• テーブルビューの状態としてサポート• コントロールやアクセサリーの切り替えができる• 一般には削除の機能は組み込めるが、中身の変更や追加となると他のユーザインタフェースと組み合わせる必要が出てくる

11

Page 13: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

まとめ

•UIKitのテーブルビューの利用方法• iPhone OS 3.0で少しだけセルの利用方法に変化があった

12

Page 14: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

書籍のサイトは3.0に完全対応

•iPhoneアプリケーションプログラミング• 新居雅行著/技術評論社刊/¥3,200(税抜き)

13

Page 15: Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー

14