Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么重新加载数据会重置UITableView的高度?_Ios_Uitableview_Height_Reloaddata - Fatal编程技术网

Ios 为什么重新加载数据会重置UITableView的高度?

Ios 为什么重新加载数据会重置UITableView的高度?,ios,uitableview,height,reloaddata,Ios,Uitableview,Height,Reloaddata,为了让我的问题可以理解,这里是我代码的摘录: [UIView animateWithDuration:0.5 animations:^{ taskTable.frame = CGRectMake( taskTable.frame.origin.x, taskTable.frame.origin.y, taskTable.frame.size.width, 127 ); } completion:^(BOOL fi

为了让我的问题可以理解,这里是我代码的摘录:

[UIView animateWithDuration:0.5 animations:^{

    taskTable.frame = CGRectMake(
        taskTable.frame.origin.x,
        taskTable.frame.origin.y,
        taskTable.frame.size.width,
        127
    );

} completion:^(BOOL finished) {

    [self.taskTable reloadData];

}];
这是基本情况:taskTable是UITableView,它集成在UIViewController中。第一个块工作正常,taskTable的高度降低0.5秒后

我的问题从完成块开始:重新加载taskTable后,taskTable再次等于原始高度。顺便说一下,原始高度是在情节提要中设置的

有人能告诉我原因吗?我能阻止这种行为吗

以下是故事板的快照:


要回答问题,请执行以下操作:

可以禁用自动布局来解决问题,但这不是最好的方法

如何解决问题:我定义了superview顶部和tableView之间的约束。之后,我在代码中添加以下内容(taskTableTop就是该约束):

我不知道是否有更简单的方法


如果有人准备好了更好的答案,请随时告诉我(我们);o) 要回答问题,请执行以下操作:

可以禁用自动布局来解决问题,但这不是最好的方法

如何解决问题:我定义了superview顶部和tableView之间的约束。之后,我在代码中添加以下内容(taskTableTop就是该约束):

我不知道是否有更简单的方法


如果有人准备好了更好的答案,请随时告诉我(我们);o)

您是否绝对确定调用
重新加载数据时会发生这种情况?或者以后会发生什么事?可能该表是由其父表自动调整大小的?请尝试以下操作:从完整表中删除重新加载的数据,然后查看是否发生了什么情况。如果什么也没发生,试着搜索你在代码中设置高度的地方。如果我注释掉重载数据,一切正常。我已经注释掉了所有可能的内容,但是在我运行reloadData之后,高度设置为原始高度。我将从故事板添加快照,可能有问题。请尝试从您的xib文件中禁用自动调整大小。好的,它会起作用(在我的例子中,我禁用了自动布局)是否有自动布局的解决方案,或者它是一个错误?您是否绝对确定在调用
重新加载数据
时会发生这种情况?或者以后会发生什么事?可能该表是由其父表自动调整大小的?请尝试以下操作:从完整表中删除重新加载的数据,然后查看是否发生了什么情况。如果什么也没发生,试着搜索你在代码中设置高度的地方。如果我注释掉重载数据,一切正常。我已经注释掉了所有可能的内容,但是在我运行reloadData之后,高度设置为原始高度。我将从故事板添加快照,可能有问题。请尝试从您的xib文件中禁用自动调整大小。好的,它会起作用(在我的示例中,我禁用了自动布局),是否有自动布局的解决方案,或者是一个错误?
[self.view removeConstraint:taskTableTop]; 

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:taskTable
                                                      attribute:NSLayoutAttributeTop
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:jobDesc
                                                      attribute:NSLayoutAttributeBottom
                                                     multiplier:0
                                                       constant:size.height + 38]];