テキストフィールドの配列を含むStackviewは、scrollviewに埋め込まれています。一部のアクションのテキストフィールドの順序を変更したい。テキストフィールドを削除および追加する方法では、ビューが歪んでしまいます。また、scrollviewから削除してテストしました。通常のスタックビューも交換が正しく表示されません。インデックスを使用して変更しています:
stackView.removeArrangedSubview(localityTF)
stackView.insertArrangedSubview(localityTF, at: 2)
これは奇妙な動作ですが、自動レイアウトシステムに問題があり、localityTFを追加し直す前に更新する必要があります。また、removeArrangedSubview
はサブビュー配列からビューを削除しないことを忘れないでください。
[self.stackView removeArrangedSubview:_label1];
[self.stackView setNeedsLayout];
[self.stackView layoutIfNeeded];
[self.stackView insertArrangedSubview:_label1 atIndex:2];
[self.stackView setNeedsLayout];
これはSwiftでの私の解決策です。スタックビューでビューを定義せずに使用することもできます。
ここでは、2つのビューを持つStackviewのビューの場所を変更しています。
if let myView = stackView.subviews.first {
stackView.removeArrangedSubview(myView)
stackView.setNeedsLayout()
stackView.layoutIfNeeded()
stackView.insertArrangedSubview(myView, at: 1)
stackView.setNeedsLayout()
}
レイアウトを更新せずに、IStackViewのビューを置き換えるためのこのコードの束を試してください。
if let objView = stackView.arrangedSubviews.first {
objView.removeFromSuperview()
}
stackView.insertArrangedSubview(yourView, at: 0)