3つのセクションを含むテーブルビューを備えたアプリケーションがあります。データの表示はすべて問題ありませんが、デバイスの向きを(縦向きから横向きに、またはその逆に)変更すると、テーブルに追加の行数が追加されますビュー
実際、アプリケーションをデバッグするときcellForRowAtIndexPath:
、デバイスを回転させるたびに実行されることがわかりました。
良い人がその問題を解決する方法を教えてもらえますか?
前もって感謝します。
3つのセクションを含むテーブルビューを備えたアプリケーションがあります。データの表示はすべて問題ありませんが、デバイスの向きを(縦向きから横向きに、またはその逆に)変更すると、テーブルに追加の行数が追加されますビュー
実際、アプリケーションをデバッグするときcellForRowAtIndexPath:
、デバイスを回転させるたびに実行されることがわかりました。
良い人がその問題を解決する方法を教えてもらえますか?
前もって感謝します。
疑われるように、問題は、tableView:numberOfRowsInSection:メソッドのデータソースデータにアイテムを追加していることです。テーブルがセクション内の行数を尋ねるたびに、データ構造にデータを追加します。データソースメソッドは何度も呼び出されることを忘れないでください。
データソースメソッドの外部で、データ構造を一度作成する必要があります。データソースメソッドは、データ構造に関して読み取り専用である必要があります。彼らは単純にカウントを返す必要があります。データソースメソッドで他の処理を実行しないでください。
これがコードです!!!
`- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section==0) {
for (int i=0; i < self.TiersArray.count; i++) {
if (([[[self.TiersArray objectAtIndex:i]t_client] isEqualToNumber:one])|| ([[[self.TiersArray objectAtIndex:i]t_client] isEqualToNumber:three]))
{
[ClientsArray addObject:[self.TiersArray objectAtIndex:i]];
}
}
return self.ClientsArray.count;
}
else if(section==1){
for (int i=0; i < self.TiersArray.count; i++) {
if (([[[self.TiersArray objectAtIndex:i]t_client]isEqualToNumber:two])||([[[self.TiersArray objectAtIndex:i]t_client]isEqualToNumber:three])) {
[ProspectsArray addObject:[self.TiersArray objectAtIndex:i]];
}
}
return self.ProspectsArray.count;
}
else{
for (int i=0; i < self.TiersArray.count; i++) {
if ([[[self.TiersArray objectAtIndex:i]t_fournisseur] isEqualToNumber:one ]) {
[FournisseurArray addObject:[self.TiersArray objectAtIndex:i]];
}
}
return self.FournisseurArray.count;
}
}
`