web-dev-qa-db-ja.com

Stackviewの交換またはビューの順序の変更

テキストフィールドの配列を含むStackviewは、scrollviewに埋め込まれています。一部のアクションのテキストフィールドの順序を変更したい。テキストフィールドを削除および追加する方法では、ビューが歪んでしまいます。また、scrollviewから削除してテストしました。通常のスタックビューも交換が正しく表示されません。インデックスを使用して変更しています:


stackView.removeArrangedSubview(localityTF)stackView.insertArrangedSubview(localityTF, at: 2)

12
Ankish Jain

これは奇妙な動作ですが、自動レイアウトシステムに問題があり、localityTFを追加し直す前に更新する必要があります。また、removeArrangedSubviewはサブビュー配列からビューを削除しないことを忘れないでください。

[self.stackView removeArrangedSubview:_label1];
[self.stackView setNeedsLayout];
[self.stackView layoutIfNeeded];

[self.stackView insertArrangedSubview:_label1 atIndex:2];   
[self.stackView setNeedsLayout];
18
Andrew Romanov

これはSwiftでの私の解決策です。スタックビューでビューを定義せずに使用することもできます

ここでは、2つのビューを持つStackviewのビューの場所を変更しています。

if let myView = stackView.subviews.first {
    stackView.removeArrangedSubview(myView)
    stackView.setNeedsLayout()
    stackView.layoutIfNeeded()

    stackView.insertArrangedSubview(myView, at: 1)
    stackView.setNeedsLayout()
}
4
Hilalkah

レイアウトを更新せずに、IStackViewのビューを置き換えるためのこのコードの束を試してください。

if let objView = stackView.arrangedSubviews.first {
        objView.removeFromSuperview()
}
stackView.insertArrangedSubview(yourView, at: 0)
1
Mushrankhan