Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

presentViewController ve dismissViewControllerAnimated ile ilgili

0 oy
86 kez görüntülendi
28, Mayıs, 2015 ios development kategorisinde burhanaksendir tarafından soruldu
28, Mayıs, 2015 burhanaksendir tarafından düzenlendi
Uygulamamdaki bir ViewController'de yer alan paylaş butonuna dokunulunca özel bir ShareViewController açılıyor ve facebook, twetter vs butonlar gözüküyor. Bu butonlardan herhangi birine dokunulunca, açılan bu ShareViewController'in dismiss olmasını istiyorum. Bunun için de aşağıdaki kodu*  kullanıyorum.

Ancak dokunulan ve presentViewController ile açılacak olan pencere de dismiss oluyor. Sadece ShareViewController'ün dismiss olup açılacak social ekranın görünmesini nasıl sağlayabilirim?

* dismissViewControllerAnimated(true, completion: nil)
 
ShareViewController içinde yer alan örnek paylaşım butonlarından birinin kodları şu şekilde:

https://gist.github.com/burhanaksendir/5253d780c50f45b7910e

1 cevap

+1 oy
29, Mayıs, 2015 yasin tarafından cevaplandı
3, Haziran, 2015 burhanaksendir tarafından seçilmiş
 
En İyi Cevap

shareViewController'da paylaşım butonunua baıldığında öncelikle viewController'ı dismiss et ve completion block'un içerisinde SLComposeViewController'ı present et.

şöyle yani;

self.dismissViewControllerAnimated(true, completion: { () -> Void in
            if SLComposeViewController.isAvailableForServiceType(SLServiceTypeFacebook){
                var facebookSheet: SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
                facebookSheet.setInitialText("Demo")
                self.presentViewController(facebookSheet, animated: true, completion: nil)

            }
        })
5, Haziran, 2015 burhanaksendir tarafından yorumlandı
5, Haziran, 2015 burhanaksendir tarafından düzenlendi
Tekrar merhaba,
addObserver  yaptıktan sonra nerede removeObserver yapmalıyız acaba ?

Ben şöyle düşündüm,   detailViewController'da:

override func viewDidDisappear(animated: Bool) {
        super.viewDidDisappear(animated)
        NSNotificationCenter.defaultCenter().removeObserver(self, name: "facebookShareTrigerNotification", object: nil)
    }

yanlışsa düzeltin lütfen.
5, Haziran, 2015 yasin tarafından yorumlandı
controller'lar için viewWillDisappear metodu içerisinde yapabilirsiniz.
5, Haziran, 2015 burhanaksendir tarafından yorumlandı
bir de merak ettiğim diğer konu ise şu:
@IBAction func facebookShare her dokunulduğunda sistem bir NSNotificationCenter.defaultCenter().addObserver mi oluşturacak yeniden ? Yoksa zaten var deyip es mi geçecek ?
5, Haziran, 2015 yasin tarafından yorumlandı
hayır facebookShare aksiyonu içerisinde bir notification post ediyoruz NSNotificationCenter.defaultCenter().postNotificationName'i kullanarak.

NSNotificationCenter.defaultCenter().addObserver'ıysa
viewDidLoad metodu içerisine tanımlıyoruz zaten yani bir kere ekleniyor ve notification'ları dinlemeye başlıyor.
siz yeni bir notification post ettiğinizde addObserver'ı yeniden tanımlanması gibi bir durum söz konusu değil yani.
5, Haziran, 2015 burhanaksendir tarafından yorumlandı
Teşekkür ederim. Şimdi daha iyi anladım.
...