UITableView
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*目次 [#bc015de8]
#contents
*プロパティ [#v6c45598]
**編集中も選択可能にする [#beea45f5]
-IBを使う場合は"Allow Selection While Editing"にチェック...
**セパレータのスタイルを設定する [#r065f9b3]
セパレータを表示しない
self.tableView.separatorStyle = UITableViewCellSeparato...
*行の更新 [#b1d0690d]
**個別の行/セルを更新する方法 [#l776da0e]
***cell.textLabel.textにセットする [#u6a4ce40]
-[[iphone - UITableViewCell: How do I update textLabel.te...
-cellForRowAtIndexPathで、UITableViewCellを取得し、テキス...
#pre{{
NSIndexPath *fifthRow = [NSIndexPath indexPathForRow:4 in...
UITableViewCell *cell = [tableView cellForRowAtIndexPath:...
cell.textLabel.text = @"the updated text";
}}
***[cell setNeedsLayout]する [#b58e06ff]
-カスタムセルで、layoutSubviewsを使ってレイアウトしている...
***reloadRowsAtIndexPaths:withRowAnimation:を使う [#zc1bc...
-これが正式?
-複数行をいっぺんに更新するときはこれが簡単
*UIViewControllerで使う [#y44ebabe]
-UITableViewだけじゃなくボタンなども表示したい場合、UITab...
-「[[UITableViewControllerを使わないでテーブルビューを使...
#pre{{
注: 管理対象のビューが複数のサブビューで構成されており、...
Table Viewを管理するためにはUITableViewControllerのサブク...
のサブクラスを使用すべきです。UITableViewControllerクラス...
BarとTab Barの間の(これら両方が存在する場合)画面一杯にT...
UITableViewControllerのサブクラスではなくUIViewController...
Viewを管理することにした場合は、ヒューマンインターフェイ...
前述のいくつかのタスクを実行する必要があります。Table Vie...
をクリアするために、deselectRowAtIndexPath:animated:を呼...
合)をクリアするviewWillAppear:メソッドを実装します。Tabl...
ViewにflashScrollIndicatorsメッセージを送信することでScro...
を点滅させなければなりません。それには、UIViewController...
バーライドします。
}}
-具体的には以下のメソッドを追加する。
#pre{{
// The following three methods must be implented in a UIV...
// that manages a UITableView but which isn't a UITableVi...
// ======================================================...
// setEditing:animated:
// ======================================================...
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:animated];
}
// ======================================================...
// viewWillAppear:
// ======================================================...
- (void)viewWillAppear:(BOOL)animated
{
// Unselect the selected row if any
NSIndexPath* selection = [self.tableView indexPathForSel...
if (selection)
[self.tableView deselectRowAtIndexPath:selection animat...
[self.tableView reloadData];
}
// ======================================================...
// viewDidAppear:
// ======================================================...
- (void)viewDidAppear:(BOOL)animated
{
// The scrollbars won't flash unless the tableview is lo...
[self.tableView flashScrollIndicators];
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOri...
{
[self.tableView flashScrollIndicators];
}
}}
-ただviewWillAppearで常にreloadしているので、[[UITableVie...
*Tips [#aa877692]
**キーボードを閉じる [#q268a9b3]
**UITextFieldを使っている場合 [#d9af265e]
-セルにUITextFieldをのせているときは、textFieldShouldRetu...
#pre{{
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
}}
-背景をタッチして閉じる
-[[iphone - Dismiss keyboard by touching background of UI...
#pre{{
UITapGestureRecognizer *gestureRecognizer = [[UITapGestur...
[self.tableView addGestureRecognizer:gestureRecognizer];
- (void) hideKeyboard {
[textField1 resignFirstResponder];
[textField2 resignFirstResponder];
...
...
}
}}
*トラブルシューティング [#g1bbf390]
**NSRangeExceptionが発生する [#u53d65ae]
tableViewでinsertRowsAtIndexPathsとdeleteRowAtIndexPaths...
#pre{{
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:insertPaths with...
[self.tableView deleteRowsAtIndexPaths:deletePaths with...
[self.tableView endUpdates];
}}
エラーが発生。
#pre{{
*** Terminating app due to uncaught exception 'NSRangeExc...
}}
エラーメッセージの意味が分かりづらいが、indexPathがおかし...
**行を更新しようとしてNSInternalInconsistencyExceptionが...
-行を追加後VisibleCellsを更新するコードでエラーが発生する...
#pre{{
- (void)updateVisibleCells
{
NSMutableArray *indexPathes = [NSMutableArray arrayWi...
for (UITableViewCell *cell in self.tableView.visibleC...
{
NSIndexPath *indexPath = [self.tableView indexPat...
[indexPathes addObject:indexPath];
}
[self.tableView reloadRowsAtIndexPaths:indexPathes wi...
}
}}
-エラーメッセージは以下のようなもの。
#pre{{
*** Terminating app due to uncaught exception 'NSInternal...
}}
-reloadDataするかinsertRowsAtIndexPathとかしないとだめぽ...
終了行:
*目次 [#bc015de8]
#contents
*プロパティ [#v6c45598]
**編集中も選択可能にする [#beea45f5]
-IBを使う場合は"Allow Selection While Editing"にチェック...
**セパレータのスタイルを設定する [#r065f9b3]
セパレータを表示しない
self.tableView.separatorStyle = UITableViewCellSeparato...
*行の更新 [#b1d0690d]
**個別の行/セルを更新する方法 [#l776da0e]
***cell.textLabel.textにセットする [#u6a4ce40]
-[[iphone - UITableViewCell: How do I update textLabel.te...
-cellForRowAtIndexPathで、UITableViewCellを取得し、テキス...
#pre{{
NSIndexPath *fifthRow = [NSIndexPath indexPathForRow:4 in...
UITableViewCell *cell = [tableView cellForRowAtIndexPath:...
cell.textLabel.text = @"the updated text";
}}
***[cell setNeedsLayout]する [#b58e06ff]
-カスタムセルで、layoutSubviewsを使ってレイアウトしている...
***reloadRowsAtIndexPaths:withRowAnimation:を使う [#zc1bc...
-これが正式?
-複数行をいっぺんに更新するときはこれが簡単
*UIViewControllerで使う [#y44ebabe]
-UITableViewだけじゃなくボタンなども表示したい場合、UITab...
-「[[UITableViewControllerを使わないでテーブルビューを使...
#pre{{
注: 管理対象のビューが複数のサブビューで構成されており、...
Table Viewを管理するためにはUITableViewControllerのサブク...
のサブクラスを使用すべきです。UITableViewControllerクラス...
BarとTab Barの間の(これら両方が存在する場合)画面一杯にT...
UITableViewControllerのサブクラスではなくUIViewController...
Viewを管理することにした場合は、ヒューマンインターフェイ...
前述のいくつかのタスクを実行する必要があります。Table Vie...
をクリアするために、deselectRowAtIndexPath:animated:を呼...
合)をクリアするviewWillAppear:メソッドを実装します。Tabl...
ViewにflashScrollIndicatorsメッセージを送信することでScro...
を点滅させなければなりません。それには、UIViewController...
バーライドします。
}}
-具体的には以下のメソッドを追加する。
#pre{{
// The following three methods must be implented in a UIV...
// that manages a UITableView but which isn't a UITableVi...
// ======================================================...
// setEditing:animated:
// ======================================================...
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:animated];
}
// ======================================================...
// viewWillAppear:
// ======================================================...
- (void)viewWillAppear:(BOOL)animated
{
// Unselect the selected row if any
NSIndexPath* selection = [self.tableView indexPathForSel...
if (selection)
[self.tableView deselectRowAtIndexPath:selection animat...
[self.tableView reloadData];
}
// ======================================================...
// viewDidAppear:
// ======================================================...
- (void)viewDidAppear:(BOOL)animated
{
// The scrollbars won't flash unless the tableview is lo...
[self.tableView flashScrollIndicators];
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOri...
{
[self.tableView flashScrollIndicators];
}
}}
-ただviewWillAppearで常にreloadしているので、[[UITableVie...
*Tips [#aa877692]
**キーボードを閉じる [#q268a9b3]
**UITextFieldを使っている場合 [#d9af265e]
-セルにUITextFieldをのせているときは、textFieldShouldRetu...
#pre{{
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
}}
-背景をタッチして閉じる
-[[iphone - Dismiss keyboard by touching background of UI...
#pre{{
UITapGestureRecognizer *gestureRecognizer = [[UITapGestur...
[self.tableView addGestureRecognizer:gestureRecognizer];
- (void) hideKeyboard {
[textField1 resignFirstResponder];
[textField2 resignFirstResponder];
...
...
}
}}
*トラブルシューティング [#g1bbf390]
**NSRangeExceptionが発生する [#u53d65ae]
tableViewでinsertRowsAtIndexPathsとdeleteRowAtIndexPaths...
#pre{{
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:insertPaths with...
[self.tableView deleteRowsAtIndexPaths:deletePaths with...
[self.tableView endUpdates];
}}
エラーが発生。
#pre{{
*** Terminating app due to uncaught exception 'NSRangeExc...
}}
エラーメッセージの意味が分かりづらいが、indexPathがおかし...
**行を更新しようとしてNSInternalInconsistencyExceptionが...
-行を追加後VisibleCellsを更新するコードでエラーが発生する...
#pre{{
- (void)updateVisibleCells
{
NSMutableArray *indexPathes = [NSMutableArray arrayWi...
for (UITableViewCell *cell in self.tableView.visibleC...
{
NSIndexPath *indexPath = [self.tableView indexPat...
[indexPathes addObject:indexPath];
}
[self.tableView reloadRowsAtIndexPaths:indexPathes wi...
}
}}
-エラーメッセージは以下のようなもの。
#pre{{
*** Terminating app due to uncaught exception 'NSInternal...
}}
-reloadDataするかinsertRowsAtIndexPathとかしないとだめぽ...
ページ名: