UITableView滚动在iOS模拟器中是断断续续的



这是一个视频,记录了索引路径中单元格中索引路径的行:(请参阅下面的新链接)

所以,另一个奇怪的...在我的家用iMac(全新)上,当我第一次在模拟器中运行Xcode项目时,它运行良好。 如果我随后退出模拟器和 Xcode,然后再次打开 Xcode 并运行它 - (将此视为改天再次开始处理该项目) - 当我尝试滚动任何 uitableview 时,模拟器会重新绘制所有单元格(它似乎没有取消排队并正确重用)。我知道这一点,因为我在绘制单元格时正在运行 NSLog。

如果我在模拟器中重置设置,然后再次运行它 - 它会顺利滚动。我尝试完全卸载Xcode并重新安装它无济于事。我正在使用Xcode 4.3.2。

现在,人们可能会认为这是代码的东西,但是,得到这个:我在办公室里有另一台(全新的iMac)。我在 Dropbox 上有这个 Xcode 项目,所以两个副本是相同的(办公室和家庭)。 在办公室里,我没有这个奇怪的滚动问题......一切正常。

两款Mac(均为27英寸,具有16gb RAM)之间的唯一区别是硬盘 -办公室 mac 有一个 1tb 7200 RPM 驱动器。我的家用Mac有一个苹果的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;
        }

经过深思熟虑,我决定完全擦除iMac并进行全新安装。
现在,虽然我刚刚执行了全新安装(实际上,这与在iOS模拟器中重置内容和设置相同) - 似乎问题已经消失。 现在,我不确定这一点,因为我刚刚执行了全新安装,但同样,我已经多次关闭并重新打开 Xcode,重新启动了几次,问题没有再次出现。

格式化系统并从头开始真的很烦人,但无论如何。 至少它是有效的。

如果事情按照您描述的方式发生,请考虑向 Apple 报告错误。

尝试安装最新版本的显卡驱动程序

我认为这里没有足够的信息来确定问题所在。我认为最好的方法是使用Xcode分析工具来追踪问题可能出在哪里。另请查看图形分析工具以确定是否发生了过度绘制。

最新更新