如何从移动表视图中停止reloadData

时间:2014-04-07 00:31:53

标签: ios uitableview tableview reloaddata

我有一个表格视图,按下按钮时我会动画到新位置。它覆盖了底部屏幕的一小部分,然后按下按钮调用一种方法,使其覆盖大约一半的屏幕。这样用户就可以从表格视图中选择一个文件。

然而,似乎当我调用reloadData时,表视图会移回原来的位置,我想阻止它发生,这样用户不需要每次都按下按钮(例如删除文件,重命名文件或向表视图添加新文件。)

我有什么想法可以做到这一点?

我已经包含了代码。文件IBAction是按下按钮时发生的事情。

-(IBAction)file:(id)sender {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];

if (self.tableView.frame.origin.y == 457) {
    [self tableAppear];
}
else {
   [self tableDisappear];
}
}

-(void)tableDisappear {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];

if ([[UIScreen mainScreen] bounds].size.height == 568) { [self.tableView setCenter:CGPointMake(160, 545)];

}
else { [self.tableView setCenter:CGPointMake(160, 545)];

}
[UIView commitAnimations];
}

-(void)tableAppear {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];

    if ([[UIScreen mainScreen] bounds].size.height == 568) { [self.tableView setCenter:CGPointMake(160, 390)];

    }
    else { [self.tableView setCenter:CGPointMake(160, 390)];


    }
    [UIView commitAnimations];

}

1 个答案:

答案 0 :(得分:4)

这很可能是自动布局的结果(当需要重新绘制屏幕时,所有视图将恢复到由其约束而不是您设置的任何帧确定的位置)。您可以关闭自动布局以查看是否存在问题。如果要使用自动布局,则需要使用约束而不是设置视图来移动或调整视图大小。