これは、インデックス パスの行のセルにインデックス パスを記録するビデオです: (以下の新しいリンクを参照)
それで、別の奇妙なもの...私の家のiMac(真新しい)で、シミュレーターで初めてXcodeプロジェクトを実行すると、正常に実行されます。その後、シミュレーターと Xcode を終了し、Xcode を再度開いて実行すると (別の日にプロジェクトの作業を開始すると考えてください) - uitableview をスクロールしようとすると、シミュレーターはすべてのセルを再描画します。 (デキューと再利用が正しく行われていないようです)。セルが描画されているときに NSLog を実行しているため、これを知っています。
シミュレーターで設定をリセットしてから再度実行すると、スムーズにスクロールします。Xcodeを完全にアンインストールして再インストールしようとしましたが、役に立ちませんでした。Xcode 4.3.2 を使用しています。
さて、これはコードの何かだと思うかもしれませんが、これを取得してください:私はオフィスに別の(真新しいiMac)を持っています。私はドロップボックスにこの Xcode プロジェクトを持っているので、両方のコピーは同じです (オフィスと自宅)。オフィスでは、この奇妙なスクロールの問題はありません...すべてが正しく機能します。
2 つの Mac (どちらも 27 インチで 16 GB RAM) の唯一の違いは hdd です。オフィスの Mac には 1 TB 7200 RPM ドライブがあります。自宅の Mac には Apple の SSD が搭載されています。
何が原因なのかわかりません...本当にイライラします。私は自宅の Mac を消去して最初からやり直すことに反対ではありませんが、それは少し抜本的です。
考え?2 つの異なるコンピューターで同じコードを実行すると異なる結果が得られるため、コードを投稿しませんでした。そのため、コードは問題ではないようです。
コードによる更新 - ビデオhttp://ge.tt/4ZuZ9mI/v/0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"dateCell";
FEDateCell *cell = (FEDateCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"FEDateCell" owner:self options:nil];
cell = dateCell;
[cell setClipsToBounds:YES];
}
PFObject *eventObj = [self.itemsList objectAtIndex:indexPath.row];
//Get cell date from row
NSDate *currentDate = [eventObj objectForKey:@"startDate"];
cell.cellDate = currentDate;
cell.eventsArray = [NSArray arrayWithObject:eventObj];
[dateFormatter setDateFormat:@"dd"];
cell.dayNumber.text = [dateFormatter stringFromDate:cell.cellDate];
[dateFormatter setDateFormat:@"EEE"];
cell.dayName.text = [dateFormatter stringFromDate:cell.cellDate];
[cell updateCellData];
return cell;
}