iOS 6'da bir UIStoryboardSegue
geçişi ne zaman tamamlandığını bilmek mümkün mü? Gezinme denetimcisinde bir UIViewController
ürününü başka bir 'a eklemek için UIStoryboardSegue
eklediğimde olduğu gibi, geçiş geçişi bittikten hemen sonra bir şey yapmak istiyorum.Dolandırıcılık yapıldıktan sonra bazı kodlar nasıl yürütülür?
cevap
Sen UINavigationControllerDelegate
protokolünü kullanır ve sonra tanımlayabilirsiniz böylece hedef denetleyicisi bir yöntemi yazabilir ve burada diyoruz Delegeler, gösterildiği gibi, seguelerin tamamlanmasından haberdar olmak için. Seferi izlemek için başka bir mantıksal yer AppDelegate
olabilir. bir görünüm denetleyicisinden bunu yapmanın
Örnek
(kısaca VC):class MyViewControllerSubclass : UIViewController, UINavigationControllerDelegate {
func viewDidLoad() {
self.navigationController.delegate = self
}
func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) {
println("Did show VC: \(viewController)")
}
}
Ancak VC segue tamamlandığında sadece gösterir, olarak VC olur viewWillAppear()
veya viewDidAppear()
temsilci yöntemleri sunulmak; ancak, hedef VC'nin un -presandığı zaman hakkında bilgi vermezler.
İzlediğiniz VC'de, VC'nin (ve belleğinin) ayrıldığını veya viewWillDisappear()
yöntemini geçersiz kıldığını belirlemek için aşağıdakini ekleyebilirsiniz.
deinit {
println(__FUNCTION__, "\(self)")
}
viewDidAppear:
yöntemini kullanmak istemiyorsanız, özel bir istek oluşturabilirsiniz. perform
yönteminde geçiş için bir animasyon kullanırsınız ve bu da bir tamamlama bloğuna sahip olabilir. Animasyon tamamlandıktan sonra kodu buraya ekleyebilirsiniz.
Öyleyse Storyboard'daki standart sürükle ve bırak segue ile mümkün değil mi? – hakonbogen
Bunu nasıl oluşturursunuz, ancak UIStoryboardSegue alt sınıfını almanız ve "perform" yöntemini uygulamanız gerekir. Bundan sonra, 'storyboard'da', segue sınıfını yeni oluşturduğunuz birime ayarladınız. – Levi
kullanabilirsiniz - (void) prepareForSegue: (UIStoryboardSegue *) segue gönderen: (id) gönderen
bir segue kaynağı UIViewController yapılır hemen önce bu yöntem çağrılır. UIViewController hedefinde bir kod yapmak istiyorsanız, segue hedef viewcontroller alabilirsiniz.
Ayrıca bu kodu desintation viewController'da viewdidAppear'da da ekleyebilirsiniz.
prepareForSegue yönteminde UIViewController hedef yöntemini çağırabilirsiniz. Burada
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"prepareForSegue: %@", segue.identifier);
if ([segue.identifier isEqualToString:@"Happy"]) {
[segue.destinationViewController setHappiness:100];
} else if ([segue.identifier isEqualToString:@"Sad"]) {
[segue.destinationViewController setHappiness:0];
}
}
setHappiness yöntem hedef Kontrolör ve burada 100 orada geçmektedir.
– navigationController:didShowViewController:animated:
Bu gerçekten gerçek segue ne zaman tamamlandığını gösteren değil - bu segue başlangıcında olur – Sam
Swift olarak, UIViewController
alt sınıf sizi UINavigationController
örneğini alabilir ve ayarlayın:
- 1. Şöyle bazı kodlar var Sınıf
- 2. Yöntemler listesi nasıl oluşturulur ve sonra yürütülür?
- 3. İçerik türleri oluşturulduktan sonra eylemler nasıl yürütülür?
- 4. PayPal Başarılı ödeme yapıldıktan sonra POST verileri
- 5. Chrome, yeniden yönlendirme yapıldıktan sonra çerezleri göndermiyor
- 6. R: Paketin yüklenmesiyle ilgili bazı kodlar nasıl çalıştırılır?
- 7. Yapılandırma değişiklikleri yapıldıktan sonra androidde şişirilmiş bir düzen nasıl kaydedilir?
- 8. Solaris GDB: Nasıl yürütülür?
- 9. jQuery ciltleme AJAX araması yapıldıktan sonra bir bağlantıya tıklayın
- 10. GridView, satır seçimi yapıldıktan sonra en üste kayıyor
- 11. IdentityStoreManager, Microsoft.AspNet.Identity için yükseltme yapıldıktan sonra bulunamadı rc1
- 12. İplik sonlandırıldıktan sonra FreeAndNill() otomatik olarak nasıl yürütülür
- 13. runMain özel görevinden nasıl yürütülür?
- 14. UICollectionView Görünümünde bir kaydırma yapıldıktan sonra her zaman yenilenemedi
- 15. Montaj dilinde basit kodlar
- 16. Vim'de nasıl derlenir ve yürütülür?
- 17. PHP olarak nasıl metin yürütülür
- 18. JQuery'de zincirleme işlevler nasıl yürütülür?
- 19. Bash komutları C'den nasıl yürütülür?
- 20. Docker kapsayıcılarında bir dolandırıcılık kümesi çalıştırılıyor
- 21. Ã © ve diğer kodlar
- 22. Eşzamanlı olarak iki iz görevini nasıl yürütülür
- 23. ÖzetTransactionalJUnit4SpringContextTests işlemindeki junit Kuralları nasıl yürütülür?
- 24. Seri hale getirme işleminden sonra otomatik olarak nasıl bir yöntem yürütülür?
- 25. ANSI grafik kodlar ve Python
- 26. Kodlama ve işlenmemiş kodlar R
- 27. Animasyon Tamamlandıktan sonra bazı yöntemleri aramak istiyorum
- 28. Ben bitmap üzerinde benim metin çiziyorum bazı kodlar (tuval) sahip tuval
- 29. rxjava interval() bazı olaylardan sonra sıfırlama süresi
- 30. MsTest, ilk hata durumunda nasıl yürütülür?
Beklediğim kadar kötü değildi. self.navigationController = self; 've bu yöntemi ekleyin. Denetleyicileri Segue Kimliğine bağlı olarak yerel değişkenlere kaydettim ve sonra bu değerleri "ViewController" işlevine geçirdim. –
Bu, kaynak görüntüleme denetleyicisinin bir gezinme denetleyicisine sahip olduğu itme istifleri için çalışacak, ancak modal seferi durumunda ne yapılmalı? – Drux
Ben Levi gelen özel Segue cevabı kullanılmış ve burada örnekteki gibi benim 'perform' uygulamaya: http://stackoverflow.com/a/23778394/586489 Bu benim itme tamamlandığında bilir ve segues kullanabilirsiniz, oldukça güzel çalışıyor. –