23

Xcodeテーブルビューを含む新しいView Controllerを作成するとき、2つのオプションがあります

  1. 新しいを作成しますUITableViewController
  2. およびプロトコルUIViewControllerを実装する新しい を作成しますUITableViewDelegateUITableViewDataSource

プロトコルに必要なすべてのメソッドとオプションのメソッドを適切に実装すると仮定すると、(メソッド スタブを記述する必要がない以外に) を使用する利点はありますUITableViewControllerか? UITableViewControllerつまり、オプション 1 をオプション 2 よりも優れた選択肢にするクラスの舞台裏で実装されているもの (メモリ管理、キャッシュなど) はありますか?

4

5 に答える 5

52

2 つのアプローチのどちらを採用するかに関係なく、デリゲート メソッドとプロトコル メソッドを作成する必要があります。

テーブル ビューを持つビュー コントローラーが必要な場合に使用UIViewControllerすることを選択する必要がある理由は 2 つだけです。UITableViewController

  1. テーブル ビューはビュー コントローラーのビューよりも小さくする必要があります。
  2. テーブル ビューと一緒にスクロールしないビュー コントローラーに追加のビューを追加する必要があります (ただし、 でこれを解決する方法がありますUITableViewController)。

UITableViewController複製する必要があるすべてのことを次に示します。

  1. を定義してセットアップしますUITableView
  2. 自分自身をテーブル ビューの dataSource およびデリゲートとして設定します。
  3. setEditing:animated:メソッドをオーバーライドしてediting、テーブル ビューのプロパティも設定します。
  4. viewWillAppear:プロパティに応じて、メソッドで最後に選択された行の選択を解除しclearsSelectionOnViewWillAppearます。
  5. メソッド内のテーブル ビューのスクロールバーを点滅させますviewDidAppear:
  6. リフレッシュ コントロールを接続します (iOS 6 以降)。
  7. テーブル ビューが最初に表示されるときに再読み込みします。
  8. テーブル ビューを調整しますcontentInset(iOS 7 以降)。
  9. キーボードが表示されたときに、必要に応じてテーブル ビューをスクロールします。
于 2013-01-22T18:40:41.050 に答える
13

0 行のコードによるキーボードの利点

UITableViewControllerオンスクリーン キーボードが表示されたときに自動スクロールを提供しますが、通常はそうでUIViewControllerはありません。

UITableViewControllerキーボード通知をいじる必要なく、ビュー内の編集領域を確実に移動します。iOS の黎明期からそうされてきましたが、キーボード通知が変更され、下位互換性が提供されることはほとんどありません。

ビューの編集が必要な場合 (ログイン画面など) はいつでも、このユニークな機能の使用を検討し、コードUITableViewControllerをまったく 0 行で活用してください。

UIViewController残念ながら、このプロトコルを採用している通常のUITableViewDelegateプロトコルでは、その機能は提供されませ

UITableViewController

iPhone OSの黎明期から今日まで動作します。

GitHubでこのソリューションを見つけ、 Swift Recipesで追加の詳細を見つけてください。

于 2015-09-04T05:50:32.883 に答える
5

UITableViewControlleriOS5で静的テーブルを持つことができます

于 2013-01-22T18:28:29.513 に答える
2

UITableViewController通常のものにはない唯一のUIViewController機能はtableViewプロパティであり、UITableViewDelegateおよびUITableViewDataSourceプロトコルに準拠しています。Ad RolandasR が指摘するように、View Controller を (子孫) に設定すると、UITableViewController静的なテーブル セルを使用することもできます。

于 2013-01-22T18:30:02.327 に答える
2

UITableViewDelegate を使用する主な利点は、その単純さです。ただし、ビューがテーブルであると想定しない独自の TableViewController を作成することには利点があります。

1) 他の要素を追加して、テーブルが画面の小さな部分を占めるようにすることができます。2) コントローラーから派生したすべての VC にアクセスできる一連のヘルパー メソッドを追加できます。UITableViewCell の種類が異なる場合に自動的に行の高さを返すヘルパー メソッドを実装し、さまざまなセルを自動登録し、テーブル内の CGPoint からセル参照を取得するメソッド、プルして更新するコールバックなどを実装します。

いつでも UITableViewController から派生させてヘルパー メソッドを追加できますが、主な利点はテーブルがビュー全体を占有しないことだと思います。

于 2013-01-22T18:30:34.307 に答える