Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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 UICollectionReusableView约束未更新_Ios_Autolayout - Fatal编程技术网

Ios UICollectionReusableView约束未更新

Ios UICollectionReusableView约束未更新,ios,autolayout,Ios,Autolayout,我试图在某个加载事件中动态激活/停用我的UICollectionReusableView子类上的一些布局约束 我已经设置了布局约束,有些已激活,有些已停用。(在您询问之前,我的所有约束都被强烈引用,我知道停用的约束不会被保留,并且会被解除分配) 在刷新代码时,我激活一些约束/停用其他约束(在调试器中,确保它们都不是nil),在单元格上调用setNeedsLayout和layoutIfNeeded,但什么也没有发生。我目视检查布局并检查约束。这些约束条件就好像我的代码甚至没有被命中一样(当然,它被

我试图在某个加载事件中动态激活/停用我的
UICollectionReusableView
子类上的一些布局约束

我已经设置了布局约束,有些已激活,有些已停用。(在您询问之前,我的所有约束都被强烈引用,我知道停用的约束不会被保留,并且会被解除分配

在刷新代码时,我激活一些约束/停用其他约束(在调试器中,确保它们都不是
nil
),在单元格上调用
setNeedsLayout
layoutIfNeeded
,但什么也没有发生。我目视检查布局并检查约束。这些约束条件就好像我的代码甚至没有被命中一样(当然,它被命中了,我放了一个调试器)。也没有违反任何约束,我已经检查了日志。我已停用的约束仍处于活动状态,而我已激活的约束未被激活,并且可视化布局确认此状态

我还从
awakeFromNib
中记录了一些文本,并且只记录了一次,因此没有标题的另一个实例


即使代码被命中并且所有内容都被正确引用,约束也没有被激活/停用的原因可能是什么?

好的,问题在于标题视图被所有者视图控制器作为实例变量手动持有,并且在最初退出队列后没有被退出队列/重用(
viewForSupplementalElementOfKind:atIndexPath
此后始终返回该实例变量)。我的约束没有任何问题

以前的开发人员出于某种原因手动持有视图的强引用,并且总是返回相同的视图,这可能会导致集合视图的行为出现一些内部不稳定。我已将其更正为常规的
dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath
返回标头的方式手机,问题就消失了


永远不要保留可重用视图/单元格的引用(或者至少不要忘记在需要时调用出列代码并刷新指针)。似乎它会导致未记录/不可预测的布局问题。

好的,原来问题与标题视图作为实例变量由所有者视图控制器手动持有有关,并且在最初退出队列后不会退出队列/重新使用(
viewForSupplementalElementOfKind:atIndexPath
此后始终返回该实例变量)。我的约束没有任何问题

以前的开发人员出于某种原因手动持有视图的强引用,并且总是返回相同的视图,这可能会导致集合视图的行为出现一些内部不稳定。我已将其更正为常规的
dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath
返回标头的方式手机,问题就消失了

永远不要保留可重用视图/单元格的引用(或者至少,在需要时不要忘记调用出列代码并刷新指针)。这似乎会导致未记录/不可预测的布局问题