Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
UITableView
テーブル内のナビゲーション
Masayuki Nii
Cocoa勉強会 関東 第38回
2009/12/19

1
2
3
Agenda
テーブルビューのインデックスについて
組み込み方法
サポートクラス

注意:本日の用語

• インデックス=ナビゲーションのための画面表示物
• 番号=いわゆる配列のインデックス
4
テーブルビューのインデックス

5
テーブルビューのインデックス

5
オブジェクトモデル
UITableView
UITableViewController

UITableViewCell
UITableViewCell
UITableViewCell
UITableViewCell

<UITableView...
データモデル-インデックスなし
Array

UITableView
UITableViewCell

Object
UITableViewCell
UITableViewCell
Object
UITableViewCell
UITableV...
インプリメント-インデックスなし
<UITableViewDataSource>の以下のメソッドを組み
込めばよい
numberOfSelectionInTableView:

• セクションの数を返す(定数1を返す)

tableView:c...
データモデル-インデックスあり
UITableView

Array

Section

Array

UITableViewCell

Object

UITableViewCell
UITableViewCell
Array
Section...
インプリメント-インデックスあり
さらに、以下のメソッドも組み込む
selectionIndexTitlesForTableView:

• インデックス上に見える文字列を配列で返す

tableView:sectionForSectionIn...
UILocalizedIndexedCollation
インデックスのサポートクラス

• インデックス運用のための文字列配列を生成
• テーブルビューとのやりとりのメソッドで使える
• 基本的にシングルトン動作
• ローカライズ対応

• i...
UILocalizedIndexedCollation クラス
のプロパティとメソッド
sectionTitles

セクションタイトル文字列の配列

sectionIndexTitles

インデックスに表示する文字列の配列

+ curre...
プロパティで得られる値
sectionTitles
[英語] A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R,

•
S, T, U, V, W, X, Y, Z, #
• [日本語] ...
現実問題
UILocalizedIndexedCollationは便利そうだが…

• タイトルやインデックスの文字は固定、しかも前述の通り
• sortedArrayFromArray:collationStringSelector:は汎用
...
さらに深読み
NSDictionaryよりもオブジェクト

• sortedArrayFromArray:collationStringSelector:の最後
は@selector(メソッド名)を指定
• 配列の要素にメソッドを適用して文字列...
まとめ
テーブルビューのインデックスは、いくつかのメソッ
ドをインプリすれば表示される

• インデックス処理をサポートする

UILocalizedIndexedCollationクラスははシンプルだが常
に実用とは限らない

• 自前で処理...
Upcoming SlideShare
Loading in …5
×

Cocoa勉強会#38-UITableViewテーブル内のナビゲーション

1,104 views

Published on

Cocoa勉強会#38
2009/12/19
UITableViewテーブル内のナビゲーション
新居雅行

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Cocoa勉強会#38-UITableViewテーブル内のナビゲーション

  1. 1. UITableView テーブル内のナビゲーション Masayuki Nii Cocoa勉強会 関東 第38回 2009/12/19 1
  2. 2. 2
  3. 3. 3
  4. 4. Agenda テーブルビューのインデックスについて 組み込み方法 サポートクラス 注意:本日の用語 • インデックス=ナビゲーションのための画面表示物 • 番号=いわゆる配列のインデックス 4
  5. 5. テーブルビューのインデックス 5
  6. 6. テーブルビューのインデックス 5
  7. 7. オブジェクトモデル UITableView UITableViewController UITableViewCell UITableViewCell UITableViewCell UITableViewCell <UITableViewDataSource> UITableViewCell UITableViewCell UITableViewCell UITableViewCell <UITableViewDelegate> UITableViewCell UITableViewCell 6
  8. 8. データモデル-インデックスなし Array UITableView UITableViewCell Object UITableViewCell UITableViewCell Object UITableViewCell UITableViewCell Object UITableViewCell UITableViewCell UITableViewCell Object UITableViewCell UITableViewCell 7
  9. 9. インプリメント-インデックスなし <UITableViewDataSource>の以下のメソッドを組み 込めばよい numberOfSelectionInTableView: • セクションの数を返す(定数1を返す) tableView:cellForRowAtIndexPath: • 引数で示されたセルのオブジェクトを返す tableView:numberOfRowsInSection: • セクションのセル数を返す 8
  10. 10. データモデル-インデックスあり UITableView Array Section Array UITableViewCell Object UITableViewCell UITableViewCell Array Section Object Object UITableViewCell UITableViewCell Array UITableViewCell Object Section Object UITableViewCell UITableViewCell UITableViewCell Object 9
  11. 11. インプリメント-インデックスあり さらに、以下のメソッドも組み込む selectionIndexTitlesForTableView: • インデックス上に見える文字列を配列で返す tableView:sectionForSectionIndexTitle:atIndex: • セクションタイトルないしはセクション番号からセクショ ン番号を求める • 両方が引数で得られるが、自由に使ってOK titleForHeaderInSection: • セクションヘッダに表示する文字列を返す 10
  12. 12. UILocalizedIndexedCollation インデックスのサポートクラス • インデックス運用のための文字列配列を生成 • テーブルビューとのやりとりのメソッドで使える • 基本的にシングルトン動作 • ローカライズ対応 • iPhone OS 3.0より搭載 ポイント • 必ずしも使わなくてもよい 11
  13. 13. UILocalizedIndexedCollation クラス のプロパティとメソッド sectionTitles セクションタイトル文字列の配列 sectionIndexTitles インデックスに表示する文字列の配列 + currentCollation – sectionForSectionIndexTitleAtIndex: – sectionForObject: collationStringSelector: – sortedArrayFromArray: collationStringSelector: インスタンス取得 インデックス番号に対応したセクショ ン番号を返す オブジェクトが所属するセクション番 号を返す 配列にメソッドを適用してソートした 配列を生成する 12
  14. 14. プロパティで得られる値 sectionTitles [英語] A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, • S, T, U, V, W, X, Y, Z, # • [日本語] A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, あ, か, さ, た, な, は, ま, や, ら, わ, # sectionIndexTitles [英語] A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, • S, T, U, V, W, X, Y, Z • [日本語] A, •, D, •, G, •, J, •, M, •, P, •, T, •, Z, あ, か, さ, た, な, は, ま, や, ら, わ 13
  15. 15. 現実問題 UILocalizedIndexedCollationは便利そうだが… • タイトルやインデックスの文字は固定、しかも前述の通り • sortedArrayFromArray:collationStringSelector:は汎用 メソッド 同様なクラス等を自分で組み込む • タイトル文字列の配列 • インデックス文字列の配列 • インデックス番号からセクション番号を得る • (あるいは文字列からセクション番号を得る) 14
  16. 16. さらに深読み NSDictionaryよりもオブジェクト • sortedArrayFromArray:collationStringSelector:の最後 は@selector(メソッド名)を指定 • 配列の要素にメソッドを適用して文字列を取り出し、その 文字列を比較して並べ替える NSDictionaryの場合 • カテゴリでNSDictionaryのメソッドを追加する オブジェクトの場合 • プロパティ名で済む • プロパティ名はすなわちプロパティのGETメソッド 15
  17. 17. まとめ テーブルビューのインデックスは、いくつかのメソッ ドをインプリすれば表示される • インデックス処理をサポートする UILocalizedIndexedCollationクラスははシンプルだが常 に実用とは限らない • 自前で処理するとしても、前述のクラスの機能は参考にで きる • データモデルに応じたデータの用意は自分でやらないとい けない 16

×