【问题标题】:How to stop reloadData from moving a table view如何阻止 reloadData 移动表视图
【发布时间】:2014-04-07 00:31:52
【问题描述】:

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

但是,似乎当我调用 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];

}

【问题讨论】:

    标签: ios uitableview tableview reloaddata


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-11-21
      • 2015-12-24
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      相关资源
      最近更新 更多