UITableViewRowAnimation具有可见的缺陷

时间:2011-12-04 20:22:34

标签: objective-c ios cocoa-touch uitableview

我以编程方式创建了一个UITableView,在索引为0的部分中有3个单元格。现在,当我在该部分的索引0处的单元格中翻转UISwitch时,它会动画插入第三个单元格。

不幸的是,我在UITableViewRowAnimation的末尾会得到那些奇怪的行,如下图所示。删除单元格时会发生同样的情况。

http://cl.ly/0l120K091b3s0h3J1l3m

有人能告诉我如何解决这个问题吗?它看起来真的很难看。这里是UISwitch开启时执行的代码:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSArray *rowAtIndex2inSectionAtIndex0 = 
        [NSArray arrayWithObject:
        [NSIndexPath indexPathForRow:2 inSection:0]];

if ([defaults boolForKey:@"one"] == 1 && 
    [defaults boolForKey:@"two"] == 1 && 
    numberOfRowsInSection0 == 2) 
{
    numberOfRowsInSection0++;

    [self.tableView 
    insertRowsAtIndexPaths:rowAtIndex2inSectionAtIndex0 
    withRowAnimation:UITableViewRowAnimationTop];
}

2 个答案:

答案 0 :(得分:1)

检查要返回的行高,确保它们是整数,而不是分数。

答案 1 :(得分:0)

我发现您提到的任意中间转换行可以通过以下方式删除: -

    [self.tableView setSeparatorStyle:UITableViewCellSelectionStyleNone];