Xcode 4.5 Storyboard 'Keluar'

102

Saya baru saja menginstal Xcode 4.5 untuk dukungan iOS6, dan saya telah melihat ikon baru bernama 'Keluar' di Storyboard saya, terdaftar di bawah pengontrol tampilan saya bersama dengan 'Responder Pertama' dll. Ikon hijau kecil berlabel 'Keluar'.

Saya dapat menemukan apa pun di dalamnya atau mencari tahu bagaimana itu dapat digunakan.

Ada yang tahu tentang itu, bagaimana cara kerjanya, untuk apa?

Josh Kahane
sumber
1
Pada pertanyaan serupa saya memposting jawaban ini: stackoverflow.com/questions/12569316/… Ini membantu menjelaskan bagaimana menggunakan fitur keluar (bersantai)
Eric

Jawaban:

72

Ini disebut " Segue Bersantai ". Sayangnya tidak ada dokumentasi untuk sejauh ini kecuali penyebutan singkat tentang daftar fitur baru XCode 4.5 yang menyatakan:

Segmen santai dapat memungkinkan transisi ke contoh adegan yang ada di papan cerita

Kabar baiknya, ada sesi dari WWDC 2012 yang menjelaskan tentang makhluk-makhluk itu (antara lain).

Anda cukup masuk ke Apple's iOS Dev Center dengan detail akun pengembang Anda dan kemudian pergi ke halaman video WWDC 2012 dan menonton "Mengadopsi Storyboard di Aplikasi Anda" (itu kelima dari atas) Diskusi tentang segmen santai dimulai pada waktu 37:20 .


Pembaruan: Berikut adalah beberapa info lebih lanjut tentang subjek dari dokumentasi Apple

Objek placeholder bernama Keluar untuk pelepasan seque. Secara default, saat pengguna menutup adegan anak, pengontrol tampilan untuk adegan itu melepas (atau mengembalikan) ke adegan induk — yaitu adegan yang awalnya dialihkan ke adegan anak. Namun, objek Exit memungkinkan pengontrol tampilan untuk melepas ke adegan arbitrer.

(Dari docset iOS6> Umum> Memulai)

Dan berikut adalah contoh yang bagus tentang bagaimana Anda dapat menerapkannya


Pembaruan Lain:

Berikut catatan teknis dari Apple terkait topik ini.

Alladinian
sumber
3
Oke, jadi bagaimana Anda menggunakannya? Mencoba kontrol-klik dari objek keluar di bagian bawah viewcontroller, tetapi tidak akan menautkan ke apa pun.
shim
4
Anda pada dasarnya harus menentukan metode untuk relaksasi Anda dan kemudian menghubungkan dari elemen ke exittombol memilih metode yang ingin Anda panggil. Anda dapat menemukan contoh di sini (saya telah memperbarui jawaban saya juga untuk memasukkan contoh)
Alladinian
1
-1: Banyak kata, sedikit informasi berguna. Setelah membaca ini dan menggunakannya di aplikasi saya sendiri, saya menulis jawaban ini yang semoga lebih berguna: stackoverflow.com/a/25829835/901641
ArtOfWarfare
1
Inilah mengapa saya menyukai dokumentasi yang tidak ada Apple. Sobat, seseorang harus dipecat di sana.
Bebek
@SpaceDog Mungkin itulah yang terjadi, mereka semua dipecat dan tidak ada yang tersisa untuk menulis dokumentasinya: / Saya suka video WWDC - 2012 tampaknya adalah tahun ketika Apple mencapai puncaknya.
diuji
10

Bayangkan Anda memiliki urutan tampilan di papan cerita Anda:

A -> ... -> Z

Anda ingin memiliki tombol pada tampilan Zyang memungkinkan pengguna untuk kembali ke A.

Jadi yang perlu Anda lakukan adalah memberikan tampilan yang ingin Anda kembalikan sepenuhnya ke, dalam hal ini, Ametode instance yang ditandai sebagai a IBActiondan mengambil satu parameter tipe UIStoryboardSegue *. Nama metode dan variabel tidak penting. Apa yang Anda lakukan dalam implementasi juga tidak penting. Berikut contohnya:

Obj-C: Antarmuka
Dalam A(bukan Z):

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue;

Dalam AImplementasi (bukan Z):

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue {
    // Only "implemented" to satisfy a respondsToSelector: search.
    // You can actually implement more stuff here, if you want, IE, if
    // you need to reach out to a server to mention that this screen was
    // returned to from a later screen.
}

Swift:
Dalam Asumber (bukan Z):

@IBAction func cancelSignup(unwindSegue: UIStoryboardSegue) {
    // Only "implemented" to satisfy a respondsToSelector: search.
    // You can actually implement more stuff here, if you want, IE, if
    // you need to reach out to a server to mention that this screen was
    // returned to from a later screen.
}

Sekarang, dalam storyboard Anda, controltarik dari sebuah elemen pada Zke (IE, tombol membatalkan) Z's Exit. Ini akan memindai melalui semua tampilan yang lebih tinggi dalam hierarki tampilan yang memiliki IBActionyang hanya menerima satu UIStoryboardSegue *sebagai tindakan dan mencantumkannya untuk Anda pilih.

Semoga ini lebih lugas dan bermanfaat dari jawaban yang ada. Saya menemukan bahwa tautan ini sangat berguna, jadi jika ada detail yang Anda masih tidak jelas setelah membaca jawaban saya, mungkin ini dapat membantu Anda (saya mencoba menyingkat semua info berguna dari artikel panjang ini menjadi jawaban singkat): http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html

ArtOfWarfare
sumber
4

Lihat juga Tidak Dapat Menghubungkan Segue Lepas Papan Cerita yang menjelaskan persyaratan untuk menghidupkan ikon Keluar. Anda harus memiliki, lebih tinggi dalam hierarki pengontrol tampilan, metode yaitu:

  1. Ditandai sebagai IBAction

  2. Mengambil satu parameter yaitu UIStoryboardSegue *

Jika kedua kondisi tersebut terpenuhi, ikon Keluar akan melihatnya dan akan mengizinkan Anda menyambungkannya dengan menarik-kontrol dari tombol di pengontrol tampilan yang sama.

Sekarang saya juga telah memposting contoh paling sederhana di dunia di sini:

https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p638presentedViewControllerStoryboard (diperbaiki 12 Juli 2013)

Ini menunjukkan betapa mudahnya sekarang untuk berpindah ke dan kembali dari pengontrol tampilan yang disajikan, sebagai lawan dari semua pekerjaan yang harus Anda lakukan sebelumnya untuk memberikan info bolak-balik (hal-hal di template dengan delegasi dan protokol , yang semuanya sekarang dapat dihapus).

Matt
sumber
3

Hanya menambahkan sedikit kehalusan pada definisi persyaratan yang mungkin bisa membantu. Ini didasarkan pada percobaan di Xcode 4.6. Saya menemukan bahwa ini secara khusus dan hanya mendeklarasikan (!) Dari metode yang memungkinkan respons control-drag yang diinginkan dari Xcode. Inilah yang saya temukan sebagai persyaratan lengkap:

  • Ditandai sebagai IBAction
  • Mengambil satu parameter yaitu UIStoryboardSegue*
  • Anda harus memiliki tindakan yang dideklarasikan (tetapi belum tentu diimplementasikan [artinya metode di bagian .Mimplementasi]).
  • Ia bisa berada di deklarasi antarmuka kelas apa pun, bahkan di bagian antarmuka a .M, kecuali kelas appdelegate. (Saya tidak melihat ketergantungan apa pun pada posisinya dalam hierarki pengontrol. Anda dapat menambahkan file lama apa pun dan sistem tampaknya menggabungkan semua metode yang memiliki UIStoryboardSegueparameter dan menampilkannya di menu ikon Keluar.) Perhatikan bahwa kontrol-seret menu bahkan akan menunjukkan metode Anda jika metode tersebut berada dalam kelas adegan yang Anda manipulasi di editor storyboard, tetapi metode tersebut akan muncul tanpa titik dua dan tampaknya tidak memicu tindakan apa pun pada waktu proses.

Contoh: -(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;

Jack Bellis
sumber