検索

ホームページ  >  に質問  >  本文

objective-c - UITableViewDataSource中的cellForRowAtIndexPath如何实现?

在controller中delegate了UITableViewDataSource以后,是必须实现这个方法以展示UITableView的。它的方法原型如下

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

能否结合例子具体解释下NSIndexPath的含义,另外与它想对应的还有一个必须实现的方法

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

这个section表示的又是什么呢?

高洛峰高洛峰2769日前591

全員に返信(2)返信します

  • PHPz

    PHPz2017-04-21 11:00:06

    まずTableViewのレイアウトを説明します。TableViewの内容はSectionとRowの2層になっており、それぞれのRowに対応するビューがTableViewCellとなります。以下に示すように、settings.app を例として取り上げます。 写真には 2 つのセクションがあります
    セクション 0 には 6 行があります -- 機内モード~オペレーター セクション 1 -- Sound~Desktop に 3 つの行が表示されます。 質問にある 2 つの方法について説明しましょう。
    リーリー
    このメソッドは特定のセルを返します。このセルは、さまざまなカスタマイズされたスタイルでレンダリングしたり、いくつかのデフォルトのスタイルでレンダリングしたりできます。
    IndexPath は、レンダリングするセルの位置をマークします。indexPath オブジェクトには、section と row という 2 つの属性があり、特定のセルを見つけることができます。

    注: このメソッドは、特定のセルが画面に表示されると呼び出され、一度も表示されない場合は 1 回呼び出されます。セルオブジェクトは画面の表示領域が消えるとリサイクルされ、表示領域に表示される他のセルに再利用されるためです。したがって、このメソッドでセルをレンダリングするときは、for ループなどを使用してセルをクリーンアップすることをお勧めします。

    リーリー
    このメソッドは、TableView が生成されたとき (または tableView オブジェクトで reloadData が呼び出されたとき) に呼び出され、特定のセクションの行 (セル) の数を返します。
    たとえば、settings.app インターフェイスでは、次のようになります リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-21 11:00:06

    1. NSIndexPath主要包含(NSUInteger)section(NSUInteger)row,每个row必然是属于一个section的,否则这个row没有意义,- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section里面就是表明各section有多少row
    2、打开Contacts,里面的那些A、B、C...这样的标题就属于section headerheader + rows + footer就构成了一个完整的section. 可以通过- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;ヘッダー、フッターも同様にカスタマイズします

    返事
    0
  • キャンセル返事