Xcode 4.5 kullanarak storyboard'ları düzenlerken yeni Çıkış simgesinin ne için kullanıldığını bilen var mı?


100

Çıkış simgesine sağ tıklandığında boş bir pencere açılır. Bir bağlantıyı herhangi bir IB öğesine veya karşılık gelen kaynak dosyaya Ctrl tuşunu basılı tutup sürükleyemezsiniz. Doktorlar hiç sevmez. Uç dosyalarında görünmez, yalnızca hikaye tahtalarında görünür. Benim varsayımım, bunun segmentler için bir doğal sonuç olduğu, ancak bunu destekleyecek yeni bir yöntem görmüyorum. Kimse?



Yanıtlar:


104

WWDC videosunda "Oturum 407 - Uygulamanıza Hikaye Tahtaları Kullanmak" adlı videoda pek çok bilgi var.

Bir segmentle bağlı iki görünüm denetleyiciniz olduğunu varsayalım. İlk görünüm denetleyicisinde aşağıdaki çıkış eylemini uygulayın:

- (IBAction)done:(UIStoryboardSegue *)segue {
    NSLog(@"Popping back to this view controller!");
    // reset UI elements etc here
}

Ardından, ikinci görünüm denetleyicisinin Storyboard sahnesinde, düğme gibi bir UI öğesinden bu görünüm denetleyicisinin altındaki çıkış simgesine Ctrl tuşunu basılı tutarak sürükleyin. done:İlk kumandanın koduna eklenen eylem bir seçenek olarak görünür. Şimdi, Ctrl tuşunu basılı tutarak çıkış simgesine sürüklediğiniz düğmeyi etkinleştirdiğinizde, ilk görünüm denetleyicisine geri dönecek ve orijinal durumunu koruyacaktır (yani, metin girişi gibi kullanıcı arabirimi öğeleri, sözüm ona hala dokunulmamış).


3
Aslında, görünüm denetleyicisinin (ve görünümlerinin) tam olarak aynı örneğine geri döner.
Jon Hess

Teşekkürler, bunu sadece "Yeşil Çıkış" ın ne hakkında olduğunu öğrenmek için okuyordum, sadece benim için bir sorunu çözdüğünü öğrenmek için. TabBar denetleyicisi ve gezinme denetleyicisi ile ayrılmış 2 görünüm denetleyicim vardı ve "Pop" geriye doğru dönmek için çalışmadı. Bu 2 dakika sürdü ve her şey dediğin gibi çalıştı! TEŞEKKÜRLER!
user589642

DoneA görünümüne geri dönmeden önce B görünüm sınıfındaki düğme üzerindeki eylem yöntemini nasıl çağırabilirim ?
uzman

WWDC videosunu izlerseniz 37
15'e

220

Kabul edilen cevabı takip etmekte zorlandım, bu yüzden burada daha fazla ayrıntı var.

Görüntü denetleyicisi C'deki aşağıdaki fotoğrafa göre, segment yolundaki herhangi bir görüntü denetleyicisine geri "çıkabilirsiniz".

görüntü açıklamasını buraya girin

ViewController A şunları yazabilirsiniz:

- (IBAction)done:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController B şunları yazabilirsiniz:

- (IBAction)back:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController C aralarından sürükle kontrol "geri" yeşil çıkış seçeneğine düğmeye basıp geri: ViewController C sizden sürükle kontrol "bitti" yeşil çıkış seçeneğine düğme ve seçin yapılır: görüntü açıklamasını buraya girin

Not: Yöntemler diğer görünüm denetleyicilerinde olsa da, ViewController C'nin çıkışı için görünürler . Bir yöntemi sürüklemeyi ve seçmeyi kontrol edin, hangi ViewController'ın çözüleceğini tanımlar.


2
Bir not daha: bazen yeşil çıkış düğmesi tüm adımlar yapılsa bile aktif değil. Bu durumda, film şeridini (veya xcode projesini) yeniden açmak, beklendiği gibi çalışmasını sağlar.
zxcat

3
Karşılaştığım diğer bir sorun da çözme segmenti yöntem imzamı .h dosyama veya sınıf uzantıma koymamamdı. Ekledikten sonra çözme segmenti açılır pencerede belirdi.
Steve Moser

2
+ Infinity forEven though the methods are on other view controllers they show up for the ViewController C's exit.
Noel Baba

15

Eric yanıtına ek olarak, burada nasıl çalıştığı:

Hedef denetleyiciye eklediğiniz işlev şöyle görünür:

@IBAction func backFromOtherController(segue: UIStoryboardSegue) {
    NSLog("I'm back from other controller!")
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.