numberOfRowsInSection で 100 を返す場合
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 100;
}
次に、メソッドで一度に作成されるセルの数はcellForRowAtIndexPath
?
numberOfRowsInSection で 100 を返す場合
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 100;
}
次に、メソッドで一度に作成されるセルの数はcellForRowAtIndexPath
?
実際には、100個のセルすべてを割り当てることはありません。代わりに、現時点で表示されるもののみ。を使用して[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
いるため、セルはメモリ処理に再利用されます。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
セルの総数を返すだけです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
このメソッドは、テーブルビューをスクロールするたびに呼び出されます。
-tableView:cellForRowAtIndexPath:
メソッドが呼び出される回数を尋ねている場合、答えは、現時点で多くのセルが表示されているときに呼び出されるということです。スクロールすると、表示されようとしている新しいセルごとに呼び出されます。現在表示されているセルの数をどのように知るのでしょうか? 各-tableView:heightForRowAtIndexPath:
セルに対して が呼び出され、テーブル ビューの contentSize が計算されます。
細胞の種類によって異なります。dequeueReusableCellWithIdentifier を設定すると、画面に表示されているものだけが初期化され、スクロールすると、上記のメソッドで設定した行数までスクロールダウンします。
100個すべてを割り当てますCells
が、一度に表示されるのは、次のCells
ように修正されるものだけです
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
の高さCell
と幅UITableView
Frame
@pbibergal に同意します。dequeueReusableCellWithIdentifier を使用し、以下のような条件を設定すると、一度に約 9 つのセルが作成されます (セルの数はテーブルビューの高さに依存します)。それ以外の場合は、システムによって一度に 100 個のセルが作成されます。
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell==nil) {
cell = [[MainCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
上記のコードを使用した場合、一度に作成される制限されたセル (9 つのセル) で、そうでない場合は一度に 100 のセルが作成され、メモリ内で影響を受けました。
UITableView
セルの数は、高さのベースを返します。最初にセル表示の数を返すことを意味します。tableView:cellForRowAtIndexPath
の非表示セルの呼び出しではなく、表示セルのみのメソッド呼び出しUITableView
。スクロールtableView:cellForRowAtIndexPath
すると、新しいセルを作成するのではなく、以前の非表示のセルを再利用します。