UITableViewDataSourceプロトコル

2013. 07. 27
・準拠
NSObject

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

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

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

・宣言
UITableView.h



●概要

UITableViewDataSourceプロトコルは、アプリケーションのUITableViewオブジェクト用のデータモデルを仲介するオブジェクトで採用します。
データソースは、テーブルビューを構築および変更するのに必要なテーブルビューオブジェクトの情報を提供します。

データモデルの典型的な役割は、データソースがテーブルビューの外観を構築する最小限の情報を提供することです。
テーブルビューオブジェクトのデリゲート(UITableViewDelegateプロトコルを採用したオブジェクト)は、その情報を提供します。

プロトコルの必須メソッドは、テーブルビューで表示するためのセルを提供するだけでなく、UITableViewオブジェクトのセクション数と各セクションの行数について通知します。
データソースは実行するメソッドのオプションによって、行の挿入、削除、並べ替えなど、テーブルビューの様々な側面を設定します。

:テーブルビューのスワイプで削除する機能(ユーザが削除ボタンを表示するために、行を水平に横切るようにスワイプする)を有効にするには、tableView:commitEditingStyle:forRowAtIndexPath:メソッドを実行する必要があります。

多くのメソッドはパラメータとしてNSIndexPathオブジェクトを取得します。
UITableViewは、記述された行インデックス(rowプロパティ)とセクションインデックス(sectionプロパティ)を取得することができるようにし、そして(indexPathForRow:inSection:クラスメソッドで)指定された行インデックスとセクションインデックスからインデックスパスを構築するために、NSIndexPath上のカテゴリを宣言します。
(各インデックスパスの最初のインデックスは、セクションと次の行を識別します)



●タスク

●テーブルビューの構成

- tableView:cellForRowAtIndexPath:    必須メソッド
- numberOfSectionsInTableView:
- tableView:numberOfRowsInSection:    必須メソッド
- sectionIndexTitlesForTableView:
- tableView:sectionForSectionIndexTitle:atIndex:
- tableView:titleForHeaderInSection:
- tableView:titleForFooterInSection:

●テーブル行の挿入と削除

- tableView:commitEditingStyle:forRowAtIndexPath:
- tableView:canEditRowAtIndexPath:

●テーブル行の並べ替え

- tableView:canMoveRowAtIndexPath:
- tableView:moveRowAtIndexPath:toIndexPath:



●インスタンスメソッド

numberOfSectionsInTableView:

データソースにテーブルビューのセクション数を返すように要求します。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

パラメータ
tableView
この情報を必要とするテーブルビューのオブジェクトを指定します。

戻り値
tableViewのセクション数です。
デフォルト値は1です。

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

宣言
UITableView.h


sectionIndexTitlesForTableView:

データソースにテーブルビューのセクションのタイトルを返すように要求します。

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

パラメータ
tableView
この情報を必要とするテーブルビューオブジェクトを指定します。

戻り値
テーブルビュー内のセクションのタイトルとして使用できる文字列の配列で、テーブルビューの右側にあるインデックスリストに表示されます。
テーブルビューはプレーンスタイル(UITableViewStylePlain)である必要があります。
例えばアルファベットのリストを表示したい場合、AからZの文字列を含む配列を返すことができます。

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

宣言
UITableView.h


tableView:canMoveRowAtIndexPath:

データソースに指定した行がテーブルビュー内の別の場所に移動できるかどうかを尋ねます。

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath

パラメータ
tableView
この情報を必要とするテーブルビューオブジェクトを指定します。
indexPath
tableView内の行の場所を示すインデックスパスを指定します。

戻り値
行が移動できる場合はYES、そうでない場合はNOを返します。

解説
このメソッドは、指定した行を並べ替えコントロールに表示させないように、デリゲートに指定することができます。
デフォルトでは、データソースにtableView:moveRowAtIndexPath:toIndexPath:メソッドが実装されている場合、並べ替えコントロールは表示されます。

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

宣言
UITableView.h


tableView:cellForRowAtIndexPath:

テーブルビューの特定の場所に挿入する、セルのデータソースを要求します。(必須)

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

パラメータ
tableView
セルを必要とするテーブルビューオブジェクトを指定します。
indexPath
tableView内の行の位置のインデックスパスを指定します。

戻り値
テーブルビューが指定した行に使用することができる、UITableViewCellを継承したオブジェクトです。
nilが返された場合、アサーションが発生します。

解説
返されたUITableViewCellオブジェクトは、パフォーマンス上の理由からアプリケーションで頻繁に再利用されます。
以前に作成したセルオブジェクトは、tableViewdequeueReusableCellWithIdentifier:メッセージを送信することによって、再利用することを明示してフェッチする必要があります。
デリゲートがUITableViewCellinitWithStyle:reuseIdentifier:メソッドを呼び出すことによってセルオブジェクトを初期化する時に、再利用可能なセルオブジェクトの識別子が割り当てられます。
テーブルセルの様々な属性は、アクセサリビューや編集コントロールなど、セルがセパレータであり情報をデータソースが提供しているかどうかに基づいて自動的に設定されます。

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

宣言
UITableView.h


tableView:commitEditingStyle:forRowAtIndexPath:

データソースに、レシーバ内の指定された行の挿入や削除を委任できるかを尋ねます。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

パラメータ
tableView
挿入や削除を必要とするテーブルビューオブジェクトを指定します。
editingStyle
indexPathで指定した行が必要とする、挿入または削除に対応するセルの編集スタイルを指定します。
可能な編集スタイルはUITableViewCellEditingStyleInsertまたはUITableViewCellEditingStyleDeleteです。
indexPath
tableView内の行の場所を示すインデックスパスを指定します。

解説
ユーザが挿入(緑色のプラス)コントロールまたは削除ボタンに関連付けされたテーブルビュー内のUITableViewCellオブジェクトをタップすると、テーブルビューはデータソースにこのメッセージを送信し、変更の委任を尋ねます。
(ユーザが削除(赤色のマイナス)コントロールをタップした場合、テーブルビューは確認のためにDeleteボタンを表示します)
データソースは必要に応じて、UITableViewメソッドのinsertRowsAtIndexPaths:withRowAnimation:またはdeleteRowsAtIndexPaths:withRowAnimation:を呼び出し、挿入または削除を委任します。

テーブルビューのスワイプによる削除(ユーザが行を横切るように水平にスワイプしてDeleteボタンを表示する)機能を有効にするには、このメソッドを実装する必要があります。

このメソッドの実装内でsetEditing:animated:を呼び出さないでください。
いくつかの理由で必要な場合、performSelector:withObject:afterDelay:メソッドを使用することによって遅延後に呼び出してください。

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

宣言
UITableView.h


tableView:moveRowAtIndexPath:toIndexPath:

テーブルビュー内の特定の場所の行を別の場所へ移動するように、データソースに指示します。

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath

パラメータ
tableView
このアクションを必要とするテーブルビューを指定します。
fromIndexPath
tableView内の移動する行の場所を示すインデックスパスを指定します。
toIndexPath
tableView内の移動先の場所を示すインデックスパスを指定します。

解説
ユーザがfromRow内の並び替えコントロールを押した時、UITableViewオブジェクトがこのメッセージをデータソースに送信します。

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

宣言
UITableView.h


tableView:numberOfRowsInSection:

テーブルビューの指定されたセクション内の行数を返すように、データソースに尋ねます。(必須)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

パラメータ
tableView
この情報を必要とするテーブルビューオブジェクトを指定します。
section
tableView内のセクションを識別するインデックス番号を指定します。

戻り値
section内の行数。

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

宣言
UITableView.h


tableView:sectionForSectionIndexTitle:atIndex:

指定されたタイトルとセクションタイトルインデックスを持つセクションのインデックスを返すように、データソースに尋ねます。

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index

パラメータ
tableView
この情報を必要とするテーブルビューオブジェクトを指定します。
title
テーブルビューのセクションインデックス内に表示するタイトルを指定します。
index
sectionIndexTitlesForTableView:で返される配列内のセクションタイトルを識別するインデックス番号を指定します。

戻り値
セクションを識別するインデックス番号です。

解説
このメソッドは、インデックス番号とセクションインデックスリストに登録されているタイトルを渡し、参照しているセクションのインデックスを返す必要があります。
文中の2つのインデックス番号を明確にすると、sectionIndexTitlesForTableView:によって返される配列内のセクションインデックスのタイトルへのインデックスと、テーブルビューのセクションへのインデックスがあり、前者が渡され後者が返されます。
このメソッドは、セクションインデックスリストを伴うテーブルビューに対して、つまりプレーンスタイル(UITableViewStylePlain)で生成されたテーブルビューでのみ実装できます。
sectionIndexTitlesForTableView:で返されるセクションタイトルの配列は、テーブルビュー内の実際のセクション数よりも項目が少ない場合があるので注意してください。

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

宣言
UITableView.h


tableView:titleForHeaderInSection:

テーブルビューの指定されたセクションのヘッダのタイトルについて、データソースに尋ねます。

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

パラメータ
tableView
タイトルを尋ねるテーブルビューオブジェクトを指定します。
section
tableViewのセクションを識別するインデックス番号を指定します。

戻り値
セクションヘッダのタイトルとして使用する文字列です。
nilが返された場合、セクションのタイトルはありません。

解説
テーブルビューは、セクションヘッダタイトルに固定されたフォントスタイルを使います。
異なるフォントスタイルにしたい場合は、代わりにデリゲートメソッドtableView:viewForHeaderInSection:の中で(UILabelオブジェクトなどの)カスタムビューを返します。

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

宣言
UITableView.h



参考文献

UITableViewDataSource Protocol Reference






Bose QuietComfort 20
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
08 | 2017/09 | 10
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
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