内容の保証はできません。


/System/Library/frameWorks/UIKit.framework

クラス UITableView

NSObject
  |
  +--UIResponder
      |
      +--UIView
          |
          +--UIScrollView
              |
              +--UITableView

概要

UITableViewのインスタンス(または単純にテーブルビューと呼ぶ)はUIScrollViewのサブクラスで、データのリストを管理します。テーブルの行は選択可能なため、テーブルは、階層的なナビゲーション(たとえば、オブジェクトの階層を掘り下げる場合など)によく使用されます。

UIKitフレームワークのテーブルビューは、デバイスの小さな画面上で設計するために1列しか表示できないという制限があります。UITableViewはUIScrollViewのサブクラスであり、ユーザがテーブルをスクロールする事を可能にしますが、許可されてるのは垂直のスクロースのみです。セルは、テーブルの個々のアイテムである、UITableViewCellオブジェクトで構成されています。テーブルの各行にはこれらのオブジェクトが描画されます。セルはタイトルやイメージのコンテンツを持っており、右端にアクセサリビューを持つ事も出来ます。標準的なアクセサリビューに情報開示インジケータや詳細情報開示ボタンがあります。前者はデータ階層の次のレベルへ導き、後者は選択されたアイテムのビューの詳細へ導きます。アクセサリビューはコントローラにもなり、スイッチやスライダーまたはカスタムビューになることが可能です。編集モードに入ることで、ユーザがテーブルの行を挿入・削除・整理する事が可能です。

テーブルビューは一つまたはそれ以上のセクションで構成されており、各セクションがそれぞれの行を持ちます。各セクションはテーブルビュー内のそれが持つインデックスで識別されており、各行はセクション内のそれが持つインデックスで識別されています。任意のセクションをセクションヘッダーとして先頭に位置させるか、セクションフッターとして底部に位置させることが可能です。

テーブルビューは、UITableViewStylePlainとUITableViewStyleGroupedの2つのスタイルを持つことができます。UITableViewのインスタンスを作成する時には、必ずこのスタイルを指定しなければなりません。また、指定したスタイルを後で変更する事はできません。"plain"スタイルはコンプリートセクションの一部が可視可能ならば、セクションヘッダーとセクションフッターがコンテンツ上に浮かんでいる感じに表示されます。テーブルビューは、テーブルの右手側にあるバーが表示するインデックスを持つことができます。特定のラベル(例えば"a"から"z"まで)にタッチする事で目的のセクションにジャンプするができます。テーブルビューの"grouped"スタイルはデフォルトで全てのセルの背景色と背景ビューを提供します。背景ビューによって特定のセクションの全てのセルを視覚的にグループ化することを提供します。例えば、あるグループは人の名前とタイトルを、あるグループはその人が使用する電話番号を、またあるグループはその人が使用する電子メールのアカウントを…と言った感じにグループ化する事が可能になります。グループテーブルの例については、"設定アプリケーション"を参照してください。グループスタイルのテーブルビューはインデックスを持つ事は出来ません。

UITableViewの多くのメソッドはNSIndexPathオブジェクトをパラメータや返り値として持っています。UITableViewは、NSIndexPathで表現された行インデックス(rowプロパティ)やセクションインデックス(sectionプロパティ)または、行インデックスとセクションインデックス(indexPathForRow:inSection:メソッド)を宣言します。特にテーブルビューの複数のセクションにおいて、行を行インデックスで識別する前にセクションインデックスを先に評価しなければなりません。

UITableViewオブジェクトは必ずデータソースとして機能するオブジェクトとデリゲートとして機能するオブジェクトを持たなければなりません。通常これらのオブジェクトはアプリケーションデリゲートまたは、高頻度でカスタム化されたUITabelViewControllerになります。データソースはUITableViewDataSourceプロトコルを、デリゲートはUITableViewDelegateプロトコルを採用する必要があります。データソースはテーブルビューが必要とするテーブルの構成の情報やテーブルの行が挿入・削除・整理された時のデータモデルの管理の情報を提供します。デリゲートは、テーブルが使用するセルやアクセサリビューの管理や選択されたアイテムの管理など他のタスクを実行することを提供します。

setEditing:animated:メッセージ(一つ目のパラメータがYES)を送ることでテーブルビューは編集モードに入ります。このモードでは、UITableViewCellに関連付けられているeditingStyleに応じて表示されている行の編集や整理を制御します。挿入や削除のコントロールをクリックするとデータソースがtableView:commitEditingStyle:forRowAtIndexPath:メッセージの受信を引き起こします。deleteRowsAtIndexPaths:withRowAnimation:またはinsertRowsAtIndexPaths:withRowAnimation:を呼び出す事によって削除や挿入を委託することができます。テーブルビューセルがshowReorderControlプロパティがYESに設定されているならば、データソースはtableView:moveRowAtIndexPath:toIndexPath:メッセージを受信します。データソースは、tableView:canMoveRowAtIndexPath:メソッドを実装する事によりセルの削除や整理を選択的に行う事が出来ます。

UITableViewはテーブルビューセルの見えている行のみキャッシュします。また、テーブル全体の行とヘッダー、フッターの高さもキャッシュされています。デフォルトで異なる行動特性またはコンテンツを持つカスタムUITableViewCellオブジェクトを生成することも可能です。

インデックス

インスタンスの作成

– initWithFrame:style:

テーブルビューの設定

– dequeueReusableCellWithIdentifier:
style property
– numberOfRowsInSection:
– numberOfSections
rowHeight property
separatorStyle property
separatorColor property
tableHeaderView property
tableFooterView property
sectionHeaderHeight property
sectionFooterHeight property
sectionIndexMinimumDisplayRowCount property

セル/セクションへのアクセス

– cellForRowAtIndexPath:
– indexPathForCell:
– indexPathForRowAtPoint:
– indexPathsForRowsInRect:
– visibleCells
– indexPathsForVisibleRows

テーブルビューのスクロール

– scrollToRowAtIndexPath:atScrollPosition:animated:
– scrollToNearestSelectedRowAtScrollPosition:animated:

セレクションの管理

– indexPathForSelectedRow
– selectRowAtIndexPath:animated:scrollPosition:
– deselectRowAtIndexPath:animated:
allowsSelection property 3.0b以降
allowsSelectionDuringEditing property

セルの挿入と削除

– beginUpdates
– endUpdates
– insertRowsAtIndexPaths:withRowAnimation:
– insertSections:withRowAnimation:
– deleteRowsAtIndexPaths:withRowAnimation:
– deleteSections:withRowAnimation:

テーブルセル編集の管理

editing property
– setEditing:animated:

テーブルのリロード

– reloadData
– reloadRowsAtIndexPaths:withRowAnimation: 3.0b以降
– reloadSections:withRowAnimation: 3.0b以降
– reloadSectionIndexTitles 3.0b以降

テーブルビューの描画領域へのアクセス

– rectForSection:
– rectForRowAtIndexPath:
– rectForFooterInSection:
– rectForHeaderInSection:

データソースとデリゲートの管理

dataSource property
delegate property

プロパティ

allowsSelectionDuringEditing

レシーバが編集モードに入ってる間にユーザがセルを選択できるかどうかを決定する。

@property(nonatomic) BOOL allowsSelectionDuringEditing

dataSource

データソースを指定する。

@property(nonatomic, assign) id<UITableViewDataSource> dataSource

delegate

デリゲートを指定する。

@property(nonatomic, assign) id<UITableViewDelegate> delegate

editing

レシーバが編集モードにあるかどうかを返す。

@property(nonatomic, getter=isEditing) BOOL editing

rowHeight

レシーバの各行(TableCell)の高さを指定する。

@property(nonatomic) CGFloat rowHeight

sectionFooterHeight

セクションフッタの高さを指定する。

@property(nonatomic) CGFloat sectionFooterHeight

sectionHeaderHeight

セクションヘッダの高さを指定する。

@property(nonatomic) CGFloat sectionHeaderHeight

sectionIndexMinimumDisplayRowCount

テーブル右端のインデックスリストに表示されるテーブル行数を指定する。

@property(nonatomic) NSInteger sectionIndexMinimumDisplayRowCount

separatorColor

行を隔てるセパレータの色を指定する。

@property(nonatomic, retain) UIColor *separatorColor

separatorStyle

セパレータのスタイルを指定する。

@property(nonatomic) UITableViewCellSeparatorStyle separatorStyle

style

レシーバのスタイルを返す。(読み取りのみ)

@property(nonatomic, readonly) UITableViewStyle style

tableFooterView

テーブルの下部に表示されているアクセサリビューを指定する。

@property(nonatomic, retain) UIView *tableFooterView

tableHeaderView

テーブルの上部に表示されているアクセサリビューを指定する。

@property(nonatomic, retain) UIView *tableHeaderView

インスタンスメソッド

beginUpdates

レシーバの各セクションや行を挿入、削除、選択、再読み込みする時にまずこのメソッドを呼び出す。編集が完了したらendUpdatesメソッドを呼び出す必要がある。beginUpdatesメソッドとendUpdatesメソッドは入れ子にすることができない。

- (void)beginUpdates

cellForRowAtIndexPath:

指定したインデックスパスのテーブルセルを返す。

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

deleteRowsAtIndexPaths:withRowAnimation:

指定したインデックスパス(NSArray)行を削除する。オプションでアニメーションの有無を指定できる。

- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

deleteSections:withRowAnimation:

指定したインデックスで一つまたは複数のセクションを削除する。オプションでアニメーションの有無を指定できる。

- (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation

dequeueReusableCellWithIdentifier:

指定した識別子の再利用可能なテーブルビューセルオブジェクトを返す。

- (UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier

deselectRowAtIndexPath:animated:

指定したインデックスパスの行を非選択状態にする。オプションでアニメーションの有無を指定できる。

- (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated

endUpdates

レシーバの各セクションや行を挿入、削除、選択、再読み込みする時にこのメソッドを使用する。beginUpdatesメソッドを呼び出した後で編集が完了したらこのメソッドを呼び出す。beginUpdatesメソッドとendUpdatesメソッドは入れ子にすることができない。

- (void)endUpdates

indexPathForCell:

指定したテーブルビューセルのセクションや行を示すインデックスパスを返す。

- (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell

indexPathForRowAtPoint:

指定した座標にあるセクションや行のインデックスパスを返す。

- (NSIndexPath *)indexPathForRowAtPoint:(CGPoint)point

indexPathForSelectedRow

選択されているセルのセクションや行のインデックスパスを返す。

- (NSIndexPath *)indexPathForSelectedRow

indexPathsForRowsInRect:

指定した矩形で囲まれている行のインデックスパスを配列で返す。

- (NSArray *)indexPathsForRowsInRect:(CGRect)rect

indexPathsForVisibleRows

レシーバに表示されている(可視可能な)行のインデックスパスを配列で返す。

- (NSArray *)indexPathsForVisibleRows

initWithFrame:style:

指定したフレームとスタイルでテーブルビューオブジェクトを初期化して返す。

- (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style

insertRowsAtIndexPaths:withRowAnimation:

指定したインデックスパスの配列によって示される位置に行を挿入する。オプションでアニメーションの有無を指定できる。

- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

insertSections:withRowAnimation:

レシーバに一つまたは複数のセクションを追加する。オプションでアニメーションの有無を指定できる。

- (void)insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation

numberOfRowsInSection:

指定したセクションの行数を返す。

- (NSInteger)numberOfRowsInSection:(NSInteger)section

numberOfSections

レシーバのセクションの数を返す。

- (NSInteger)numberOfSections

rectForFooterInSection:

指定したセクションのフッタの描画領域を返す。

- (CGRect)rectForFooterInSection:(NSInteger)section

rectForHeaderInSection:

指定したセクションのヘッダの描画領域を返す。

- (CGRect)rectForHeaderInSection:(NSInteger)section

rectForRowAtIndexPath:

指定したインデックスパスの行の描画領域を返す。

- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath

rectForSection:

指定したセクションの描画領域を返す。

- (CGRect)rectForSection:(NSInteger)section

reloadData

セクションと行を再読み込みする。

- (void)reloadData

scrollToNearestSelectedRowAtScrollPosition:animated:

指定位置までテーブルビューの行をスクロールさせる。

- (void)scrollToNearestSelectedRowAtScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

scrollToRowAtIndexPath:atScrollPosition:animated:

指定したインデックスパスの行をスクリーンの特定の位置に合わせてスクロールさせる。

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

selectRowAtIndexPath:animated:scrollPosition:

指定したインデックスパスの行を選択する。オプションでスクリーンの特定の位置に合わせて選択行までスクロールさせることができる。

- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition

setEditing:animated:

編集モードの切り替えをする。

- (void)setEditing:(BOOL)editing animated:(BOOL)animate

visibleCells

テーブルビューセルがビジブル状態かどうかを返す。

- (NSArray *)visibleCells

コンスタント

Table View Style

スタイル概要
UITableViewStylePlainヘッダとフッタは線で隔てられる。スクロール時にテーブルビューが浮き上がる。
UITableViewStyleGrouped行のグループをはっきりと区別させる。テーブルビューは浮き上がらない。

Table View Scroll Position

ポジション概要
UITableViewScrollPositionNone指定行が画面に全て表示される最低限のスクロールをする。
UITableViewScrollPositionTopテーブルビューの上部に指定行が表示されるようにスクロールする。
UITableViewScrollPositionMiddleテーブルビューの中部に指定行が表示されるようにスクロールする
UITableViewScrollPositionBottomテーブルビューの下部に指定行が表示されるようにスクロールする

Table Cell Insertion and Deletion Animation

アニメーション概要
UITableViewRowAnimationFade挿入時フェードイン 削除時フェードアウト
UITableViewRowAnimationRight挿入時右からスライドイン 削除時右へスライドアウト
UITableViewRowAnimationLeft挿入時左からスライドイン 削除時左へスライドアウト
UITableViewRowAnimationTop挿入時上からスライドイン 削除時上へスライドアウト
UITableViewRowAnimationBottom挿入時下からスライドイン 削除時下へスライドアウト

通知

UITableViewSelectionDidChangeNotification

選択行のテーブルビューが変更された時に投稿される。この通知はユーザ情報ディクショネリに関連付けられていない。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-02-09 (水) 16:20:20 (2386d)