0

3つのセクションを含むテーブルビューを備えたアプリケーションがあります。データの表示はすべて問題ありませんが、デバイスの向きを(縦向きから横向きに、またはその逆に)変更すると、テーブルに追加の行数が追加されますビュー

実際、アプリケーションをデバッグするときcellForRowAtIndexPath:、デバイスを回転させるたびに実行されることがわかりました。

良い人がその問題を解決する方法を教えてもらえますか?

前もって感謝します。

4

2 に答える 2

1

疑われるように、問題は、tableView:numberOfRowsInSection:メソッドのデータソースデータにアイテムを追加していることです。テーブルがセクション内の行数を尋ねるたびに、データ構造にデータを追加します。データソースメソッドは何度も呼び出されることを忘れないでください。

データソースメソッドの外部で、データ構造を一度作成する必要があります。データソースメソッドは、データ構造に関して読み取り専用である必要があります。彼らは単純にカウントを返す必要があります。データソースメソッドで他の処理を実行しないでください。

于 2012-10-14T00:05:17.003 に答える
0

これがコードです!!!

`- (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;
}
}

`

于 2012-10-13T23:58:54.073 に答える