objective-c - UITableViewDataSource中的cellForRowAtIndexPath如何实现?
高洛峰
高洛峰 2017-04-21 10:58:06
0
2
587

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

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

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

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

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(2)
PHPzhong

まず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
洪涛

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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート