Saya mendeteksi pendekatan lain. Pada dasarnya: Pindah = Potong + Tempel
Dengan cara ini Anda melakukannya:
- dapatkan semua subview Anda menjadi anak dari tampilan orang tua baru (P ')
- pertahankan (hampir) semua batasan Anda di Papan Cerita berbasis Tata Letak Otomatis
- menjaga posisi relatif subview Anda (frame) satu sama lain
Dengan cara ini Anda tidak:
- edit file Storyboard di editor teks
Dasar masalahnya adalah bahwa setiap tampilan kecuali satu (root) di Storyboard memiliki tampilan induknya . Selanjutnya, saat Anda menyalin / memindahkan beberapa subview, Anda kehilangan bingkai dan batasan .
Jawabannya cukup sederhana. Anda membuat salinan subview (SVs) Anda dengan menyalin tampilan induknya (P) ke tampilan induk baru (P '). Dengan cara ini Anda mungkin perlu membuat ulang batasan dari tampilan baru induk (P ') ke tampilan induk barunya, tetapi tidak untuk setiap subview yang ingin Anda pindahkan.
Setelah Anda membuat salinan tampilan induk (P) menjadi yang baru (P '), dari tampilan baru itu (P') Anda:
- pindahkan semua anak kecuali yang ingin Anda pindahkan
- membuat ulang batasan new parent (P ')
- membuat ulang kemungkinan outlet Interface Builder ke (SVs ')
Dan dari tampilan orang tua asli (P) Anda:
- pindahkan semua anak yang ingin Anda pindahkan
Sebelum:
Lihat 1
Lihat2
P.
SVs-Anda-ingin-pindah
SVs-Anda-tidak-ingin-pindah
Lihat3
Setelah:
Lihat 1
Lihat2
P.
SVs-Anda-tidak-ingin-pindah
Lihat3
P '
SVs'-you-want-to-move
Saya harus menekankan bahwa ini tidak menggeneralisasi dengan baik jika Anda memiliki misalnya UIScrollView sebagai pandangan orang tua. Kemudian salinannya akan menjadi UIScrollView yang mungkin tidak diinginkan.
Hal lainnya adalah ketika Anda menghapus beberapa subview (SV) dalam tampilan induk asli (P), Anda mungkin perlu membuat ulang beberapa batasan jika yang lain (subview tidak dapat dipindahkan) mereferensikannya. Tapi Anda tetap harus melakukannya.