UITableViewCellクラス

2013. 08. 06
・継承
UIViewUIResponderNSObject

・準拠
NSCoding
UIGestureRecognizerDelegate
NSCoding (UIView)
UIAppearance (UIView)
UIAppearanceContainer (UIView)
NSObject (NSObject)

・フレームワーク
/System/Library/Frameworks/UIKit.framework

・利用可能
iOS 2.0以降で利用可能

・手引書
iOS Table View プログラミングガイド


・宣言
UITableViewCell.h



●概要

UITableViewCellクラスは、UITableViewオブジェクト内に表示するセルの属性と動作を定義します。

UITableViewCellオブジェクト(またはテーブルセル)は、強調状態、編集状態とコントロール、アクセサリビュー、並べ替えコントロール、セルの背景、コンテンツのインデントなど、プロパティとセルの選択を管理するプロパティとメソッドを含みます。
更にクラスにはセルのコンテンツの設定と管理を行うためのプロパティが含まれており、テキストや画像を指定することができます。

iOS 3.0ではUITableViewCellに2つの主要な改良が含まれています。
  • 特定の場所や属性にセルの位置要素(ラベルや画像)を配するセルスタイルは予め定義されています。
    適用できるスタイルの定数の詳細については『Cell Styles』を参照してください。

  • セルのコンテンツにアクセスするためのプロパティがあります。
    これらのプロパティにはtextLabeldetailTextLabelimageViewが含まれています。
    一度関連付けされたUILabelUIImageViewオブジェクトを取得すると、テキスト色やフォント、画像、強調画像などの属性を設定することができます。
標準のUITableViewCellオブジェクトに、指定したスタイルを超えた拡張をするには2つの方法があります。
コンテンツ用に様々なフォーマットやサイズの文字列と画像の複数のセルを生成するために、(contentViewプロパティを介して)セルのコンテントビューを取得し、サブビューを追加することができます。
またアプリケーションに必要な特性や動作のセルを取得するために、UITableViewCellのサブクラス化することができます。
詳細は『iOS Table Viewプログラミングガイド』を参照してください。

:(UIViewで宣言されているbackgroundColorプロパティを介してセルの背景色を設定し)セルの背景色を変更する場合、データソースのtableView:cellForRowAtIndexPath:メソッド内ではなく、デリゲートのtableView:willDisplayCell:forRowAtIndexPath:メソッド内で行う必要があります。
iOS 3.0でグループスタイルのテーブルビュー内でセルの背景色を変更する場合、以前のOSのバージョンとは効果が異なります。
現在は領域の外側ではなく、角丸矩形の内側の領域に作用します。



●タスク

●UITableViewCellオブジェクトの初期化

– initWithStyle:reuseIdentifier:
– initWithFrame:reuseIdentifier:    iOS 3.0では非推奨

●セルの再利用

  reuseIdentifier    プロパティ
– prepareForReuse

●セルのコンテンツとしてのテキストの管理

  textLabel    プロパティ
  detailTextLabel    プロパティ
  font    プロパティ    iOS 3.0では非推奨
  lineBreakMode    プロパティ    iOS 3.0では非推奨
  selectedTextColor    プロパティ    iOS 3.0では非推奨
  text    プロパティ    iOS 3.0では非推奨
  textAlignment    プロパティ    iOS 3.0では非推奨
  textColor    プロパティ    iOS 3.0では非推奨

●セルのコンテンツとしての画像の管理

  imageView    プロパティ
  image    プロパティ    iOS 3.0では非推奨
  selectedImage    プロパティ    iOS 3.0では非推奨

●セルオブジェクトのビューへのアクセス

  contentView    プロパティ
  backgroundView    プロパティ
  selectedBackgroundView    プロパティ
  multipleSelectionBackgroundView    プロパティ

●アクセサリビューの管理

  accessoryType    プロパティ
  accessoryView    プロパティ
  editingAccessoryType    プロパティ
  editingAccessoryView    プロパティ
  hidesAccessoryWhenEditing    プロパティ    iOS 3.0では非推奨

●セルの選択と強調の管理

  selected    プロパティ
  selectionStyle    プロパティ
– setSelected:animated:
  highlighted    プロパティ
– setHighlighted:animated:

●セルの編集

  editing    プロパティ
– setEditing:animated:
  editingStyle    プロパティ
  showingDeleteConfirmation    プロパティ
  showsReorderControl    プロパティ

●状態遷移への調整

– willTransitionToState:
– didTransitionToState:

●コンテンツのインデントの管理

  indentationLevel    プロパティ
  indentationWidth    プロパティ
  shouldIndentWhileEditing    プロパティ

●ターゲットとアクションの管理

これらのプロパティはiOS 3.0では非推奨です。
代わりにUITableViewDataSourceプロトコルのtableView:commitEditingStyle:forRowAtIndexPath:メソッド、またはUITableViewDelegateプロトコルのtableView:accessoryButtonTappedForRowWithIndexPath:メソッドを使用してください。

  accessoryAction    プロパティ    iOS 3.0では非推奨
  editAction    プロパティ    iOS 3.0では非推奨
  target    プロパティ    iOS 3.0では非推奨



●プロパティ

accessoryType

セルが(通常状態で)使用する必要がある、標準アクセサリビューのタイプを指定します。

@property(nonatomic) UITableViewCellAccessoryType accessoryType

解説
アクセサリビューはテーブルビューの通常(デフォルト)状態でセルの右側に表示されます。
標準アクセサリビューはディスクロージャシェブロンを含みます。
(有効なaccessoryType定数の詳細は『Cell Accessory Type』を参照してください)
デフォルト値はUITableViewCellAccessoryNoneです。
カスタムアクセサリビューがaccessoryViewプロパティを介して設定されている場合、このプロパティの値は無視されます。
セルが有効でアクセサリタイプがUITableViewCellAccessoryDetailDisclosureButtonの場合、アクセサリビューはタッチを追跡し、タップした時にデータソースオブジェクトにtableView:accessoryButtonTappedForRowWithIndexPath:メッセージを送信します。

通常と編集状態の双方が設定されている場合、アクセサリ型の画像は通常と編集の状態間をクロスフェードします。
編集モード中のセルのアクセサリ型を設定するにはeditingAccesspryTypeプロパティを使用します。
双方の状態でこのプロパティが設定されていない場合、セルは必要に応じてスライドイン/アウトのアニメーションを行います。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableViewCell.h


accessoryView

(通常の状態では)セルの右側に配される、通常はコントロールとして使用されるビューです。

@property(nonatomic, retain) UIView *accessoryView

解説
このプロパティの値がnilではない場合、UITableViewCellクラスはテーブルビューの通常(デフォルト)状態ではアクセサリビューに指定されたビューを使用し、accessoryTypeプロパティの値は無視します。
提供されたアクセサリビューは、フレームワークが提供しているコントロールやラベル、またはカスタムビューにすることができます。
アクセサリビューはセルの右側に表示されます。

アクセサリビューは通常と編集状態の両方が設定されている場合にクロスフェードします。
編集モード中のセルのアクセサリビューの設定は、editingAccessoryViewプロパティを使用してください。
双方の状態でこのプロパティが設定されていない場合、必要に応じてセルはスライドイン/アウトのアニメーションを行います。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableViewCell.h


contentView

セルオブジェクトのコンテンツビューを返します。(読み込みのみ)

@property(nonatomic, readonly, retain) UIView *contentView

解説
UITableViewCellオブジェクトのコンテンツビューは、セルによって表示されるコンテンツのデフォルトのスーパービューです。
単純に追加ビューを追加してセルをカスタマイズする場合は、編集モードやセルの遷移中などではなく、適切に配置することができるようにコンテントビューにそれらを追加する必要があります。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableViewCell.h


detailTextLabel

存在する場合はテーブルセルのセカンダリラベルを返します。(読み込みのみ)

@property(nonatomic, readonly, retain) UILabel *detailTextLabel

解説
セルのセカンダリ(または詳細)ラベルを保持します。
UITableViewCellはセカンダリラベルをサポートするスタイルのセルを生成する時に、適切なラベルを追加します。
スタイルが詳細ラベルをサポートしていない場合はnilを返します。
現在定義されているセルスタイルのメインラベルの詳細に付いては『Cell Styles』を参照してください。

利用可能
iOS 3.0以降で利用可能。

宣言
UITableViewCell.h


editingStyle

セルの編集スタイルです。(読み込みのみ)

@property(nonatomic, readonly) UITableViewCellEditingStyle editingStyle

解説
Cell Editing Style』で説明している定数のいずれかが、このプロパティの値として使用され、セルを編集可能状態にするか、挿入または削除コントロールを表示するかどうかを指定します。
デフォルト値はUITableViewCellEditingStyleNone(編集不可)です。
デリゲートはtableView:editingStyleForRowAtIndexPath:メソッドの実装の中で、特定のセルに対してこのプロパティの値を返します。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableViewCell.h


font

タイトルのフォントです。
(iOS 3.0では非推奨です。代わりにUILabelオブジェクトのフォントと設定し、textLabeldetailTextLabelプロパティに割り当ててください)

@property(nonatomic, retain) UIFont *font

解説
このプロパティの値がnil(デフォルト)の場合、UITableViewCellはデバイスに最適な標準フォントを使用します。

利用可能
iOS 2.0以降で利用可能。
iOS 3.0で非推奨。

宣言
UITableViewCell.h


image

セルのコンテンツとして使用する画像です。
(iOS 3.0では非推奨です。代わりにimageViewプロパティでUIImageViewオブジェクトを取得し、カプセル化した画像を取得または設定して使用してください)

@property(nonatomic, retain) UIImage *image

解説
このプロパティのデフォルト値はnil(画像無し)です。
画像はタイトルの左側に配置されます。

利用可能
iOS 2.0以降で利用可能。
iOS 3.0で非推奨。

宣言
UITableViewCell.h


imageView

テーブルセルのイメージビューを返します。(読み込みのみ)

@property(nonatomic, readonly, retain) UIImageView *imageView

解説
テーブルビューのイメージビュー(UIImageViewオブジェクト)を返しますが、初期状態では画像が設定されていません。
画像を設定されている場合、ラベルの前にセルの左側に表示されます。
UITableViewCellは、セルを生成する時にイメージビューオブジェクトを生成します。

利用可能
iOS 3.0以降で利用可能。

宣言
UITableViewCell.h


showsReorderControl

セルに並べ替えコントロールを表示するかどうかを決定するブール値です。

@property(nonatomic) BOOL showsReorderControl

解説
並べ替えコントロールはグレーで、セルの右側に複数の水平なバーから成るコントロールです。
ユーザはこのコントロールをドラッグすることで、テーブル内でセルを並べ替えることができます。
デフォルト値はNOです。
この値がYESの場合、並べ替えコントロールが一時的に全てのアクセサリビューを置き換えます。

並べ替えコントロールを表示するには、このプロパティを設定するだけではなく、UITableViewDataSourceメソッドのtableView:moveRowAtIndexPath:toIndexPath:を実装する必要があります。
加えて、データソースがtableView:canMoveRowAtIndexPath:でNOを返す実装をしている場合、その指定された行に並べ替えコントロールは表示されません。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableViewCell.h


text

セルのテキストです。
(iOS 3.0では非推奨です。代わりにtextLabeldetailTextLabelプロパティを使用してください。)

@property(nonatomic, copy) NSString *text

解説
デフォルトはnilです(テキストはありません)。

利用可能
iOS 2.0以降で利用可能。
iOS 3.0で非推奨。

宣言
UITableViewCell.h


textAlignment

セル内のテキストの配置を指定する定数です。
(iOS 3.0では非推奨です。代わりにtextLabeldetailTextLabelプロパティに割り当てられた、UILabelオブジェクトのテキスト配置を設定します。)

@property(nonatomic) UITextAlignment textAlignment

解説
プロパティの値がnil(デフォルト)の場合、タイトルは左揃え(UITextAlignmentLeft)になっています。
それ以外のテキスト配置の説明についてはUITextAlignmentを参照してください。

利用可能
iOS 2.0以降で利用可能。
iOS 3.0で非推奨。

宣言
UITableViewCell.h


textLabel

テーブルセルのメインテキストコンテンツに使用するラベルを返します。(読み込みのみ)

@property(nonatomic, readonly, retain) UILabel *textLabel

解説
セルのメインラベルを保持します。
UITableViewCellは、指定したセルスタイルのセルを生成する時に適切なラベルを追加します。
現在定義されているセルスタイルのメインラベルの説明については『Cell Styles』を参照してください。

利用可能
iOS 3.0以降で利用可能。

宣言
UITableViewCell.h



●インスタンスメソッド

initWithStyle:reuseIdentifier:

スタイルと再利用識別子を指定してテーブルセルを初期化し、呼び出し側に返します。

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString*)reuseIdentifier

パラメータ
style
セルスタイルを示す定数を指定します。
これらの定数の説明についてはCell Stylesを参照してください。
reuseIdentifier
テーブルビューの複数の行を描画するために再利用する場合、セルオブジェクトを識別するための文字列を指定します。
セルオブジェクトを再利用しない場合はnilを渡します。
同じ形式の全てのセルには、同じ再利用識別子を使用する必要があります。

戻り値
初期化されたUITableViewCellオブジェクト、またはオブジェクトが生成できなかった場合はnilを返します。

解説
このメソッドはクラスの指定イニシャライザです。
再利用識別子は同じく一般的な構成を持つテーブルビューのセル(行)に関連付けられ、セルのコンテンツは含まれません。
tableView:cellForRowAtIndexPath:の実装では、テーブルビューのデリゲートはUITableViewメソッドのdequeueReusableCellWithIdentifier:メソッドを呼び出し、再利用識別子を渡して、現在の行の基礎として使用するためにセルオブジェクトを取得ます。

style用にUITableViewCellによって定義された異なる構成を持つテーブルセルが必要な場合、独自のカスタムセルを作成する必要があります。
個別にセルの行高を設定したい場合は、デリゲートメソッドのtableView:heightForRowAtIndexPath:を実装してください。

利用可能
iOS 3.0以降で利用可能。

宣言
UITableViewCell.h


initWithFrame:reuseIdentifier:

テーブルセルオブジェクトを初期化して返します。
(iOS 3.0では非推奨です。代わりにinitWithStyle:reuseIdentifier:を使用してください)

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier

パラメータ
frame
セルのフレーム矩形を指定します。
テーブルビューは自動的にセルの位置と最適なサイズを生成するため、ほとんどの場合CGRectZeroを渡すことができます。
ただし複数のサブビューを持つカスタムセルの場合は、それぞれ独自に自動サイズ調整マスクを用い、非ゼロのフレーム矩形を指定する必要があり、これはテーブルビューがセルのサイズ変化に応じて自動的にサブビューを配置することができます。
reuseIdentifier
テーブルビューの複数の行を描画するために再利用する場合、セルオブジェクトを識別するための文字列を指定します。
セルオブジェクトを再利用しない場合はnilを渡します。

戻り値
初期化されたUITableViewCellオブジェクト、またはオブジェクトが生成できなかった場合はnilを返します。

解説
このメソッドはクラスの指定イニシャライザです。
再利用識別子は同じく一般的な構成を持つテーブルビューのセル(行)に関連付けられ、セルのコンテンツは含まれません。
tableView:cellForRowAtIndexPath:の実装では、テーブルビューのデリゲートはUITableViewメソッドのdequeueReusableCellWithIdentifier:メソッドを呼び出し、再利用識別子を渡して、現在の行の基礎として使用するためにセルオブジェクトを取得ます。

利用可能
iOS 2.0以降で利用可能。
iOS 3.0で非推奨。

宣言
UITableViewCell.h


setEditing:animated:

レシーバの編集モードを切り替えます。

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

パラメータ
editing
YESで編集モードになり、NOで解除されます。
デフォルト値はNOです。
animate
YESで挿入/削除コントロールや並べ替えコントロールの表示/非表示でアニメーションを行い、NOではすぐに移行します。

解説
editing値をYESに設定してこのメソッドを呼び出し、UITableViewCellオブジェクトがコントロールを持つ構成の時、各セルの左側には挿入(緑色のプラス)または削除(赤色のマイナス)が、右側には並べ替えコントロールが表示されます。
UITableViewのsetEditing:animated:メソッドが呼び出された時、各可視のセルでこのメソッドが呼び出されます。
editing値をNOに設定してこのメソッドを呼び出すと、セルからコントロールが削除されます。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableViewCell.h



●定数

Cell Styles

セルの様々なスタイルの列挙です。

typedef enum {
    UITableViewCellStyleDefault,
    UITableViewCellStyleValue1,
    UITableViewCellStyleValue2,
    UITableViewCellStyleSubtitle
} UITableViewCellStyle;

定数

UITableViewCellStyleDefault
テキストラベル(左寄せ黒文字)のセルの単純なスタイルで、オプションで画像を表示することができます。
これはiOS 3.0以前のセルのデフォルトのスタイルであることに注意してください。
iOS 3.0以降で利用可能。
UITableViewCell.hで宣言。

UITableViewCellStyleValue1
左寄せ黒テキストでセルの左側にラベルを配し、右側に小さな右寄せ青テキストのラベルを配するセルのスタイルです。
設定アプリケーションで、このスタイルのセルが使用されています。
iOS 3.0以降で利用可能。
UITableViewCell.hで宣言。

UITableViewCellStyleValue2
右寄せ青テキストでセルの左側にラベルを配し、右側に小さな左寄せ黒テキストの別のラベルを配するセルのスタイルです。
電話/連絡先アプリケーションで、このスタイルのセルが使用されています。
iOS 3.0以降で利用可能。
UITableViewCell.hで宣言。

UITableViewCellStyleSubtitle
上部に左寄せのラベルを配し、その下に小さな左寄せグレーテキストを配するセルのスタイルです。
iPodアプリケーションで、このスタイルのセルが使用されています。
iOS 3.0以降で利用可能。
UITableViewCell.hで宣言。

解説
これら全てのセルスタイルでは、テキストラベルの大きい方はtextLabelプロパティを介して、小さい方はdetailTextLabelプロパティを介してアクセスされます。


Cell Selection Style

選択されたセルのスタイルです。

typedef enum {
    UITableViewCellSelectionStyleNone,
    UITableViewCellSelectionStyleBlue,
    UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle;

定数

UITableViewCellSelectionStyleNone
セルが選択された時、異なるスタイルにはなりません。
iOS 2.0以降で利用可能。
UITableViewCell.hで宣言。

UITableViewCellSelectionStyleBlue
セルが選択された時、背景が青くなります。
これはデフォルト値です。
iOS 2.0以降で利用可能。
UITableViewCell.hで宣言。

UITableViewCellSelectionStyleGray
セルが選択された時、背景がグレーになります。
iOS 2.0以降で利用可能。
UITableViewCell.hで宣言。

解説
selectionStyleプロパティの値の設定に、これらの定数を使用します。

宣言
UITableViewCell.h


Cell Editing Style

セルで使用される編集コントロールです。

typedef enum {
    UITableViewCellEditingStyleNone,
    UITableViewCellEditingStyleDelete,
    UITableViewCellEditingStyleInsert
} UITableViewCellEditingStyle;

定数

UITableViewCellEditingStyleNone
セルは編集コントロールを持ちません。
これはデフォルト値です。
iOS 2.0以降で利用可能。
UITableViewCell.hで宣言。

UITableViewCellEditingStyleDelete
セルは削除編集コントロールを持ちます。
このコントロールはマイナス記号を赤い円で囲んでいます。
iOS 2.0以降で利用可能。
UITableViewCell.hで宣言。

UITableViewCellEditingStyleInsert
セルは挿入編集コントロールを持ちます。
このコントロールはプラス記号を緑の円で囲んでいます。
iOS 2.0以降で利用可能。
UITableViewCell.hで宣言。

解説
editingStyleプロパティの値の設定に、これらを使用します。

宣言
UITableViewCell.h


Cell Accessory Type

セルで使用される標準アクセサリコントロールのタイプです。

typedef enum {
    UITableViewCellAccessoryNone,
    UITableViewCellAccessoryDisclosureIndicator,
    UITableViewCellAccessoryDetailDisclosureButton,
    UITableViewCellAccessoryCheckmark
} UITableViewCellAccessoryType;

定数

UITableViewCellAccessoryNone
セルはアクセサリビューを持ちません。
これはデフォルト値です。
iOS 2.0以降で利用可能。
UITableViewCell.hで宣言。

UITableViewCellAccessoryDisclosureIndicator
セルは通常の山型のような形状のアクセサリコントロールを持ちます。
これはディスクロージャインジケータの代わりとして意図しています。
このコントロールはタッチを追跡しません。
iOS 2.0以降で利用可能。
UITableViewCell.hで宣言。

UITableViewCellAccessoryDetailDisclosureButton
セルはコンテンツとして山型の画像を持つ青いボタンのアクセサリコントロールを持ちます。
これは構成目的を意図しています。
このコントロールはタッチを追跡します。
iOS 2.0以降で利用可能。
UITableViewCell.hで宣言。

UITableViewCellAccessoryCheckmark
セルは右側にチェックマークを持ちます。
このコントロールはタッチを追跡しません。
テーブルビューのデリゲートは、tableView:didSelectRowAtIndexPath:メソッド内で(おそらくセクションのある行にチェックマークで制限をして)行のセクションをチェックマークで管理することができます。
iOS 2.0以降で利用可能。
UITableViewCell.hで宣言。

解説
これらの定数はaccessoryTypeプロパティの値の設定に使用されます。

宣言
UITableViewCell.h



参考文献

UITableViewCell Class Reference

Deprecated UITableViewCell Methods

UITableViewクラス

2013. 08. 04
・継承
UIScrollViewUIViewUIResponderNSObject

・準拠
NSCoding
NSCoding (UIScrollView)
NSCoding (UIView)
UIAppearance (UIView)
UIAppearanceContainer (UIView)
NSObject (NSObject)

・フレームワーク
/System/Library/Frameworks/UIKit.framework

・利用可能
iOS 2.0以降で利用可能

・手引書
iOS Table View プログラミングガイド

・宣言
UITableView.h



●概要

UITableViewのインスタンス(または単にテーブルビューと呼ぶ)は、情報の階層リストの表示と編集をするための手段です。

UIKitフレームワークのテーブルビューは、小さな画面のデバイス用に設計されているため、単一の列に制限されています。
UITableViewはUIScrollViewのサブクラスなので、ユーザはテーブルをスクロールすることができますが、UITableViewでは垂直方向のスクロールしかできません。
テーブルの個々の項目を構成するセルはUITableViewCellオブジェクトで、UITableViewはテーブルの可視行の描画にこれらのオブジェクトを使用します。
セルはコンテンツ(タイトルと画像)を持つことができ、右端付近にはアクセサリビューを持つことができます。
標準アクセサリビューには、ディスクロージャインジケータと詳細ディスクロージャボタンがあり、前者は次のレベルのデータ階層に進むもので、後者は選択した項目の詳細ビューに進みます。
またアクセサリビューは、スイッチやスライダなどのフレームワークのコントロールや、カスタマイズしたビューを使用することができます。
テーブルビューはユーザがテーブルの行の挿入、削除、並べ替えを行うことができる編集モードに入ることができます。

テーブルビューはそれぞれ独自の行を持つ、0個以上のセクションから構成されています。
セクションはテーブルビュー内のインデックス番号で識別され、行はセクション内のインデックス番号で識別されます。
全てのセクションは必要に応じて、先頭にセクションヘッダを最後にセクションフッタを設定することができます。

テーブルビューはUITableViewStylePlainUITableViewStyleGroupedの2つのスタイルのいずれかを持つことができます。
UITableViewのインスタンスを生成する際にはテーブルスタイルを指定する必要があり、またこのスタイルは変更することができません。
プレーンスタイルでは、完全なセクションの一部が表示されている場合、セクションヘッダとフッタはコンテンツの上に浮きます。
テーブルビューはテーブルの右側に(『a』~『z』などの)バーとしてインデックスを表示させることができます。
目的とするセクションへジャンプするために特定のラベルにタッチすることができます。
テーブルビューのグループスタイルは、デフォルトで背景色と全てのセルの背景ビューを提供します。
背景ビューは、特定のセクション内の全てのセル用に視覚的なグループ化を提供します。
例えば、あるグループは個人の名前とタイトル、別のグループには個人の使用する電話番号、別のグループには電子メールアカウントなどとすることができます。
グループテーブルの例については設定アプリケーションを参照してください。
グループスタイルのテーブルビューはインデックスを持つことはできません。

UITableViewの多くのメソッドは、パラメータや戻り値としてNSIndexPathオブジェクトを取ります。
UITableViewは表現された行インデックス(rowプロパティ)とセクションインデックス(sectionプロパティ)を取得することができ、そして指定された行インデックスとセクションインデックス(indexPathForRow:inSection:メソッド)からインデックスパスを構築するNSIndexPathのカテゴリを宣言します。
特に複数のセクションを持つテーブルビューでは、インデックス番号で行を識別する前に、セクションインデックスの数を求める必要があります。

UITableViewオブジェクトは、データソースとして機能するオブジェクトとデリゲートとして機能するオブジェクトを持つ必要があり、通常これらのオブジェクトはアプリケーションデリゲート、またより頻繁にはカスタマイズされたUITableViewControllerオブジェクトです。
データソースはUITableViewDataSourceプロトコルを、デリゲートはUITableViewDelegateプロトコルを採用する必要があります。
データソースはUITableViewがテーブルを構築するのに必要な情報を提供し、テーブルの行を挿入、削除、並べ替えする際のデータモデルを管理します。
デリゲートはテーブルの行の設定、選択、行の並べ替え、強調、アクセサリビュー、そして編集操作を管理します。

(第1引数がYESの)setEditing:animated:メッセージが送信される時、テーブルビューは各可視行に編集または並べ替えコントロールを表示する編集モードに入り、それぞれ関連付けされたUITableViewCelleditingStyleに依存します。
挿入や削除コントロールをクリックすると、データソースはtableView:commitEditingStyle:forRowAtIndexPath:メッセージを受信します。
必要に応じて、deleteRowsAtIndexPaths:withRowAnimation:またはinsertRowsAtIndexPaths:withRowAnimation:を呼び出すことによって、削除または挿入をコミットします。
また編集モードで、テーブルビューのセルのshowsReorderControlプロパティがYESに設定されている場合、データソースはtableView:moveRowAtIndexPath:toIndexPath:メッセージを受信します。
データソースはtableView:canMoveRowAtIndexPath:を実装することによって、セルの並べ替えコントロールを削除することができます。

UITableViewは可視行のテーブルビューセルをキャッシュします。
デフォルトのセルと異なるコンテンツや行動特性を持った、カスタムUITableViewCellオブジェクトを作ることもできます。
(詳細は『iOS Table Viewプログラミングガイド』のp.59『Table View Cellの詳細』を参照してください)

UITableViewは、UITableViewの新しいインスタンスを生成する、または新しいデータソースを割り当てる場合のみreloadDataを呼び出し、UIViewのlayoutSubviewsメソッドをオーバーライドします。
テーブルビューをリロードすると、現在の選択を含め状態をクリアします。
しかし明示的にreloadDataを呼び出した場合は、状態のクリアとその後の直接または間接的なlayoutSubviewsの呼び出しによるリロードは行われません。

基本的なビューの動作についての詳細は『iOS View プログラミングガイド』を参照してください。


状態保存

iOS 6以降では、このビューのrestorationIdentifierプロパティに値を割り当てる場合、現在選択されている行と最初の可視行の保存を試みます。
これらの項目の保存はテーブルのデータソースがUIDataSourceModelAssociationプロトコルを採用している場合のみ可能で、テーブル内の行の位置とは関係無く行のコンテンツを識別する方法を提供します。
復元時には、テーブルは以前の選択とデータソースによってまだ提供されている全ての行の最初の可視行を復元します。

状態の保存と復元処理についての詳細は『iOSアプリケーションプログラミングガイド』を参照してください。



●タスク

●UITableViewオブジェクトの初期化

– initWithFrame:style:

●テーブルビューの構成

– dequeueReusableCellWithIdentifier:
  style    プロパティ
– numberOfRowsInSection:
– numberOfSections
  rowHeight    プロパティ
  separatorStyle    プロパティ
  separatorColor    プロパティ
  backgroundView    プロパティ

●テーブルビューセルの作成

– registerNib:forCellReuseIdentifier:
– registerClass:forCellReuseIdentifier:
– dequeueReusableCellWithIdentifier:forIndexPath:
– dequeueReusableCellWithIdentifier:

●ヘッダやフッタビューへのアクセス

– registerNib:forHeaderFooterViewReuseIdentifier:
– registerClass:forHeaderFooterViewReuseIdentifier:
– dequeueReusableHeaderFooterViewWithIdentifier:
  tableHeaderView    プロパティ
  tableFooterView    プロパティ
  sectionHeaderHeight    プロパティ
  sectionFooterHeight    プロパティ
– headerViewForSection:
– footerViewForSection:

●セルやセクションへのアクセス

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

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

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

●セクションの管理

– indexPathForSelectedRow
– indexPathsForSelectedRows
– selectRowAtIndexPath:animated:scrollPosition:
– deselectRowAtIndexPath:animated:
  allowsSelection    プロパティ
  allowsMultipleSelection    プロパティ
  allowsSelectionDuringEditing    プロパティ
  allowsMultipleSelectionDuringEditing    プロパティ

●行やセクションの挿入、削除、移動

– beginUpdates
– endUpdates
– insertRowsAtIndexPaths:withRowAnimation:
– deleteRowsAtIndexPaths:withRowAnimation:
– moveRowAtIndexPath:toIndexPath:
– insertSections:withRowAnimation:
– deleteSections:withRowAnimation:
– moveSection:toSection:

●テーブルセルの編集の管理

  editing    プロパティ
– setEditing:animated:

●テーブルビューの再読み込み

– reloadData
– reloadRowsAtIndexPaths:withRowAnimation:
– reloadSections:withRowAnimation:
– reloadSectionIndexTitles

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

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

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

  dataSource    プロパティ
  delegate    プロパティ

●テーブルインデックスの設定

  sectionIndexMinimumDisplayRowCount    プロパティ
  sectionIndexColor    プロパティ
  sectionIndexTrackingBackgroundColor    プロパティ



●プロパティ

editing

レシーバが編集モードかどうかを示すブール値です。

@property(nonatomic, getter=isEditing) BOOL editing

解説
このプロパティ値がYESの場合、テーブルビューは編集モードであり、テーブルのセルはセルの設定に応じて各セルの左側に挿入または削除のコントロール、右側に並べ替えのコントロールが表示されることがあります。
(詳細は『UITableViewCellクラス』を参照してください)
コントロールをタップルすると、テーブルビューはデータソースメソッドtableView:commitEditingStyle:forRowAtIndexPath:を呼び出します。
デフォルト値はNOです。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableView.h



●インスタンスメソッド

cellForRowAtIndexPath:

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

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

パラメータ
indexPath
レシーバ内の行の場所を示すインデックスパスを指定します。

戻り値
テーブルのセルを表すオブジェクト、あるいはセルが不可視またはindexPathが範囲外の場合はnilを返します。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableView.h


deleteRowsAtIndexPaths:withRowAnimation:

インデックスパスの配列で指定された行を削除し、オプションで削除の際にアニメーションを行います。

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

パラメータ
indexPaths
削除する行を識別するNSIndexPathオブジェクトの配列を指定します。
animation
削除の際にどのようなアニメーションをするかを示す定数で、例えばフェードアウトや下からのスライドアウトを行えます。
これらの定数についての詳細は『Table Cell Insertion and Deletion Animation』を参照してください。

解説
beginUpdatesendUpdatesメソッドによって定義されたアニメーションブロック内で呼び出した時、このメソッドの動作に注意してください。
UITableViewは行やセクションの削除を処理した後まで、行やセクションの挿入を延期します。
これは挿入や削除メソッドの呼び出しの順序に関係無く発生します。
これは可変配列内の項目の挿入や削除とは異なり、連続した挿入や削除操作に使用される配列のインデックスに影響を及ぼすことができます。
この問題についての詳細は、『iOS Table Viewプログラミングガイド』のp.93『行やセクションの一括挿入、一括削除、および一括再ロード』を参照してください。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableView.h


dequeueReusableCellWithIdentifier:

識別子で示された場所の再利用可能なテーブルビューのセルオブジェクトを返します。

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

パラメータ
identifier
再利用可能なセルオブジェクトを識別する文字列を指定します。
このパラメータはnil以外である必要があります。

戻り値
関連付けされた識別子を持つUITableViewCellオブジェクト、または再利用可能なセルがキューに存在しない場合はnilを返します。

解説
パフォーマンス上の理由から、一般的にtableView:cellForRowAtIndexPath:メソッド内で行にセルを割り当てる時に、テーブルビューのデータソースがUITableViewCellオブジェクトを再利用する必要があります。
テーブルビューは、データソースが再利用のためにマークしたUITableViewCellオブジェクトのキューまたはリストを保持します。
テーブルビューに新しいセルを提供するように尋ねられた時、データソースオブジェクトからこのメソッドを呼び出します。
既存のセルが利用可能であるか、以前に登録されたクラスやnibファイルを使用して新たに生成する場合、このメソッドは既存のセルをデキューします。
再利用可能なセルが存在せず、クラスやnibファイルが登録されていない場合、このメソッドはnilを返します。

指定したidentifierのクラスを登録して新しいセルを生成する必要がある場合、このメソッドはinitWithStyle:reuseIdentifier:メソッドを呼び出すことによってセルを初期化します。
nibベースのセルでは、このメソッドは提供されたnibファイルからセルオブジェクトを読み込みます。
既存のセルが再利用可能な場合、このメソッドは代わりにセルのprepareForReuseメソッドを呼び出します。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableView.h


deselectRowAtIndexPath:animated:

インデックスパスで識別された指定された行の選択を解除し、オプションで選択解除時にアニメーションを行います。

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

パラメータ
indexPath
レシーバ内の行を識別するインデックスパスを指定します。
animated
選択解除時にアニメーションを行いたい場合にはYES、すぐに変更を行う必要がある場合にはNOを指定します。

解説
このメソッドを呼び出すと、デリゲートはtableView:willSelectRowAtIndexPath:tableView:didSelectRowAtIndexPath:のメッセージを受け取らず、またオブザーバにUITableViewSelectionDidChangeNotification通知を送信しません。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableView.h


indexPathForCell:

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

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

パラメータ
cell
テーブルビューのセルオブジェクトを指定します。

戻り値
セルの行とセクションを表すインデックスパス、またはインデックスパスが無効な場合はnilを返します。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableView.h


insertRowsAtIndexPaths:withRowAnimation:

インデックスパスの配列によって識別された場所にあるレシーバに行を挿入し、オプションで挿入時にアニメーションを行います。

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

パラメータ
indexPaths
テーブルビュー内の行を識別するとともに、行インデックスとセクションインデックスをそれぞれ表すNSIndexPathオブジェクトを指定します。
animation
セルの挿入時にどのようなアニメーションをするか、あるいはアニメーションしないかを示す定数す。
これらの定数についての詳細は『Table Cell Insertion and Deletion Animation』を参照してください。

解説
UITableViewはセルと可視セルのその他のコンテンツを取得するため、直後に関連するデリゲートとデータソースのメソッドを呼び出します。

beginUpdatesendUpdatesメソッドによって定義されたアニメーションブロック内で呼び出した時、このメソッドの動作に注意してください。
UITableViewは行やセクションの削除を処理した後まで、行やセクションの挿入を延期します。
これは挿入や削除メソッドの呼び出しの順序に関係無く発生します。
これは可変配列内の項目の挿入や削除とは異なり、連続した挿入や削除操作に使用される配列のインデックスに影響を及ぼすことができます。
この問題についての詳細は、『iOS Table Viewプログラミングガイド』のp.93『行やセクションの一括挿入、一括削除、および一括再ロード』を参照してください。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableView.h


reloadData

レシーバの行とセクションを再読み込みします。

- (void)reloadData

解説
セクションヘッダとフッタ、インデックス配列など、セルを含むテーブルを構築するために使用される全てのデータを再読み込みするために、このメソッドを呼び出します。
効率化のため、テーブルビューは可視の行のみ再表示します。
再読み込みの結果としてテーブルが縮小した場合はオフセットを調整します。
テーブルビューの完全なデータの再読み込みをしたい時は、テーブルビューのデリゲートまたはデータソースはこのメソッドを呼び出します。
行の挿入や削除をするメソッド内、特にbeginUpdatesendUpdatesの呼び出しで実装されたアニメーションブロック内での呼び出しはしないでください。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableView.h


setEditing:animated:

レシーバの編集モードを切り替えます。

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

パラメータ
editing
YESで編集モードになり、NOで解除されます。
デフォルト値はNOです。
animate
YESで編集モードになる際にトランジションアニメーションを行い、NOではすぐに遷移します。

解説
editingの値をYESに設定してこのメソッドを呼び出すと、テーブルビューは各可視のUITableViewCellオブジェクトのsetEditing:animated:を呼び出して編集モードに入ります。
editingの値をNOに設定してこのメソッドを呼び出すと編集モードがオフになります。
編集モードでは、セルの構成にも依りますが、テーブルの各セルの左側に挿入や削除コントロール、右側に並べ替えコントロールが表示されます。
(詳細は『UITableViewCellクラス』を参照してください)
テーブルビューのデータソースでは、tableView:canEditRowAtIndexPath:を実装することにより、セルを編集モードから除外する選択ができます。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableView.h



●定数

・Table View Style

テーブルビューのスタイルです。

typedef enum {
    UITableViewStylePlain,
    UITableViewStyleGrouped
} UITableViewStyle;

定数

UITableViewStylePlain
簡素なテーブルビューです。
全てのセクションのヘッダまたはフッタはインラインセパレータとして表示され、テーブルビューがスクロールする際には浮いた表現になります。
iOS 2.0以降で利用可能。
UITableView.hで宣言。

UITableViewStyleGrouped
セクション毎に別個の行のグループで表すテーブルビューです。
セクションのヘッダとフッタは浮いていなく、行と一緒にスクロールします。
iOS 2.0以降で利用可能。
UITableView.hで宣言。

解説
テーブルビューを初期化(initWithFrame:style:参照)する際には、テーブルスタイルを設定してください。
スタイルは後から変更することができません。

宣言
UITableView.h


Table Cell Insertion and Deletion Animation

行が挿入または削除された時のアニメーションのタイプです。

typedef enum {
    UITableViewRowAnimationFade,
    UITableViewRowAnimationRight,
    UITableViewRowAnimationLeft,
    UITableViewRowAnimationTop,
    UITableViewRowAnimationBottom,
    UITableViewRowAnimationNone,
    UITableViewRowAnimationMiddle,
    UITableViewRowAnimationAutomatic = 100
} UITableViewRowAnimation;

定数

UITableViewRowAnimationFade
テーブルビューの行の挿入/削除の際に、行をフェードイン/アウトします。
iOS 2.0以降で利用可能。
UITableView.hで宣言。

UITableViewRowAnimationRight
行の挿入時には右側から行をスライドイン、削除時には右へスライドアウトします。
iOS 2.0以降で利用可能。
UITableView.hで宣言。

UITableViewRowAnimationLeft
行の挿入時には左側から行をスライドイン、削除時には左へスライドアウトします。
iOS 2.0以降で利用可能。
UITableView.hで宣言。

UITableViewRowAnimationTop
行の挿入時には上側から行をスライドイン、削除時には上へスライドアウトします。
iOS 2.0以降で利用可能。
UITableView.hで宣言。

UITableViewRowAnimationBottom
行の挿入時には下側から行をスライドイン、削除時には下へスライドアウトします。
iOS 2.0以降で利用可能。
UITableView.hで宣言。

UITableViewRowAnimationNone
実行時にアニメーションを行いません。
セルが単に再読み込みされたように、新しいセルの値だけが表示されます。
iOS 3.0以降で利用可能。
UITableView.hで宣言。

UITableViewRowAnimationMiddle
テーブルビューは新旧のセルが空間の中央を占有していた/占有するようにします。
(訳注:直訳ではイメージが湧き難いので実際に試したところ、行の挿入時には使用するセルの中央から広がるように、行の削除時には使用していたセルの中心向かって縮むようにアニメーションを行います。)
iPhone 3.2で利用できます。
iOS 3.2以降で利用可能。
UITableView.hで宣言。

UITableViewRowAnimationAutomatic
テーブルビューは、貴方のために適切なアニメーションのスタイルを選択します。
(iOS 5.0で導入されました。)
iOS 5.0以降で利用可能。
UITableView.hで宣言。

解説
これらの定数は、insertRowsAtIndexPaths:withRowAnimation:insertSections:withRowAnimation:deleteRowsAtIndexPaths:withRowAnimation:deleteSections:withRowAnimation:reloadRowsAtIndexPaths:withRowAnimation:reloadSections:withRowAnimation:メソッドのパラメータとして指定します。

宣言
UITableView.h


・Section Index Icons

テーブルビューのセクションインデックス内で表示するアイコンを要求します。

UIKIT_EXTERN NSString *const UITableViewIndexSearch;

定数

UITableViewIndexSearch
データソースは、sectionIndexTitlesForTableView:で返される文字列の配列内に、この文字定数が含まれていた場合、セクションインデックスは対応するインデックスの場所に拡大鏡のアイコンを表示します。
この場所は一般的にインデックスの最初のタイトルの場所である必要があります。
iOS 3.0以降で利用可能。
UITableView.hで宣言。

宣言
UITableView.h



●通知

UITableViewSelectionDidChangeNotification

投稿しているテーブルビュー内の選択された行が変更された時に投稿されます。

この通知に関連付けされているuserInfo辞書はありません。

利用可能
iOS 2.0以降で利用可能。

宣言
UITableView.h



参考文献

UITableView Class Reference






Bose QuietComfort 20
Calendar
07 | 2013/08 | 09
Sun Mon Tue Wed Thu Fri Sat
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Bose QuietComfort 20
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR