SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
UITableView
テーブル内のナビゲーション
Masayuki Nii
Cocoa勉強会 関東 第38回
2009/12/19

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

注意:本日の用語

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

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

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

UITableViewCell
UITableViewCell
UITableViewCell
UITableViewCell

<UITableViewDataSource>

UITableViewCell
UITableViewCell
UITableViewCell
UITableViewCell

<UITableViewDelegate>

UITableViewCell
UITableViewCell

6
データモデル-インデックスなし
Array

UITableView
UITableViewCell

Object
UITableViewCell
UITableViewCell
Object
UITableViewCell
UITableViewCell
Object
UITableViewCell
UITableViewCell
UITableViewCell
Object

UITableViewCell
UITableViewCell

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

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

tableView:cellForRowAtIndexPath:

• 引数で示されたセルのオブジェクトを返す

tableView:numberOfRowsInSection:

• セクションのセル数を返す

8
データモデル-インデックスあり
UITableView

Array

Section

Array

UITableViewCell

Object

UITableViewCell
UITableViewCell
Array
Section
Object

Object

UITableViewCell
UITableViewCell

Array

UITableViewCell

Object

Section
Object

UITableViewCell
UITableViewCell
UITableViewCell

Object

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

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

tableView:sectionForSectionIndexTitle:atIndex:

• セクションタイトルないしはセクション番号からセクショ
ン番号を求める
• 両方が引数で得られるが、自由に使ってOK

titleForHeaderInSection:

• セクションヘッダに表示する文字列を返す
10
UILocalizedIndexedCollation
インデックスのサポートクラス

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

• iPhone OS 3.0より搭載
ポイント
• 必ずしも使わなくてもよい

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

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

sectionIndexTitles

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

+ currentCollation
– sectionForSectionIndexTitleAtIndex:
– sectionForObject:
collationStringSelector:
– sortedArrayFromArray:
collationStringSelector:

インスタンス取得
インデックス番号に対応したセクショ
ン番号を返す
オブジェクトが所属するセクション番
号を返す
配列にメソッドを適用してソートした
配列を生成する
12
プロパティで得られる値
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
現実問題
UILocalizedIndexedCollationは便利そうだが…

• タイトルやインデックスの文字は固定、しかも前述の通り
• sortedArrayFromArray:collationStringSelector:は汎用
メソッド

同様なクラス等を自分で組み込む

• タイトル文字列の配列
• インデックス文字列の配列
• インデックス番号からセクション番号を得る
• (あるいは文字列からセクション番号を得る)
14
さらに深読み
NSDictionaryよりもオブジェクト

• sortedArrayFromArray:collationStringSelector:の最後
は@selector(メソッド名)を指定
• 配列の要素にメソッドを適用して文字列を取り出し、その
文字列を比較して並べ替える

NSDictionaryの場合

• カテゴリでNSDictionaryのメソッドを追加する

オブジェクトの場合

• プロパティ名で済む
• プロパティ名はすなわちプロパティのGETメソッド
15
まとめ
テーブルビューのインデックスは、いくつかのメソッ
ドをインプリすれば表示される

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

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

• 自前で処理するとしても、前述のクラスの機能は参考にで
きる
• データモデルに応じたデータの用意は自分でやらないとい
けない

16

Mais conteúdo relacionado

Mais de Masayuki Nii

Mais de Masayuki Nii (18)

Cocoa勉強会#6-SQLiteをCocoaで使う
Cocoa勉強会#6-SQLiteをCocoaで使うCocoa勉強会#6-SQLiteをCocoaで使う
Cocoa勉強会#6-SQLiteをCocoaで使う
 
Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号
Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号
Cocoa勉強会#60-Common Cryptoを使った共通鍵の暗号と復号
 
Cocoa勉強会#57-Baseによるローカライズまとめ
Cocoa勉強会#57-BaseによるローカライズまとめCocoa勉強会#57-Baseによるローカライズまとめ
Cocoa勉強会#57-Baseによるローカライズまとめ
 
Cocoa勉強会#56-小ネタ集あなたの常識はすでに通用しない
Cocoa勉強会#56-小ネタ集あなたの常識はすでに通用しないCocoa勉強会#56-小ネタ集あなたの常識はすでに通用しない
Cocoa勉強会#56-小ネタ集あなたの常識はすでに通用しない
 
Cocoa勉強会#45-AWS SimpleDBを使ってみる
Cocoa勉強会#45-AWS SimpleDBを使ってみるCocoa勉強会#45-AWS SimpleDBを使ってみる
Cocoa勉強会#45-AWS SimpleDBを使ってみる
 
Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー
Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビューCocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー
Cocoa勉強会#36-iPhone OS 3.0で変更されたテーブルビュー
 
Cocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurlCocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurl
 
Cocoa勉強会#28-OpenSSLで暗号化したファイルを復号する
Cocoa勉強会#28-OpenSSLで暗号化したファイルを復号するCocoa勉強会#28-OpenSSLで暗号化したファイルを復号する
Cocoa勉強会#28-OpenSSLで暗号化したファイルを復号する
 
Cocoa勉強会#27-QuickLookプラグインの作り方
Cocoa勉強会#27-QuickLookプラグインの作り方Cocoa勉強会#27-QuickLookプラグインの作り方
Cocoa勉強会#27-QuickLookプラグインの作り方
 
Cocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプ
Cocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプCocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプ
Cocoa勉強会23-識別情報の変換〜文字エンコードとデータタイプ
 
Cocoa勉強会#37-シェイクイベントの実装
Cocoa勉強会#37-シェイクイベントの実装Cocoa勉強会#37-シェイクイベントの実装
Cocoa勉強会#37-シェイクイベントの実装
 
Cocoa勉強会#32-表形式のデータに順序を記録する方法
Cocoa勉強会#32-表形式のデータに順序を記録する方法Cocoa勉強会#32-表形式のデータに順序を記録する方法
Cocoa勉強会#32-表形式のデータに順序を記録する方法
 
Cocoa勉強会#35-iPhoneでのコピペとカスタムUI
Cocoa勉強会#35-iPhoneでのコピペとカスタムUICocoa勉強会#35-iPhoneでのコピペとカスタムUI
Cocoa勉強会#35-iPhoneでのコピペとカスタムUI
 
Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証
Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証
Cocoa勉強会#47-NSURLConnectionのデリゲートメソッドと認証
 
Cocoa勉強会#43-Blocksを使う
Cocoa勉強会#43-Blocksを使うCocoa勉強会#43-Blocksを使う
Cocoa勉強会#43-Blocksを使う
 
Cocoa勉強会#42-UIWebKitをコンポーネントとして使う
Cocoa勉強会#42-UIWebKitをコンポーネントとして使うCocoa勉強会#42-UIWebKitをコンポーネントとして使う
Cocoa勉強会#42-UIWebKitをコンポーネントとして使う
 
Cocoa勉強会#50-ストーリーボードとセグウェイ
Cocoa勉強会#50-ストーリーボードとセグウェイCocoa勉強会#50-ストーリーボードとセグウェイ
Cocoa勉強会#50-ストーリーボードとセグウェイ
 
Cocoa勉強会#63-Xcode Server〜みんなで使ってみる
Cocoa勉強会#63-Xcode Server〜みんなで使ってみるCocoa勉強会#63-Xcode Server〜みんなで使ってみる
Cocoa勉強会#63-Xcode Server〜みんなで使ってみる
 

Último

Último (7)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

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