tamam şimdi anladım mevzuyu,
viewcontroller hiyerarşisine aykırı bir şey yapmak istiyorsunuz, bu nedenle istediğinizi yapabilmek için notification kullanmak uygun olur.
öncelikle,
ShareViewController içerisinde faceBookShare aksiyonunu şu şekilde düzenleyelim.
bu viewController içerisinde facebook paylaşım sayfamızı açmayacağız çünkü viewController'ı önce dismiss edeceğiz.
@IBAction func facebookShare(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: { () -> Void in
NSNotificationCenter.defaultCenter().postNotificationName("facebookShareTrigerNotification", object: nil)
})
}
facebook paylaşım sayfamızı mevcut shareViewControoller'ımızı dismiss ettikten sonra parentViewcontroller olan detailViewController'içerisinde gerçekleştirmemiz gerek Bunun için yukarıda görebileceğiniz dismiss animasyonu completion block'u içerisinde bir notification post ediyorum ve hemen detailViewController'da viewDidLoad metodu içerisine bu notification'u alabilecek bir listener ekliyorum.
NSNotificationCenter.defaultCenter().addObserver(self, selector: "initiateFacebookShareView", name: "facebookShareTrigerNotification", object: nil)
bu listener'ı initiateFacebookShareView aksiyonuna bağlıyorum.
func initiateFacebookShareView() {
if SLComposeViewController.isAvailableForServiceType(SLServiceTypeFacebook){
var facebookSheet: SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
facebookSheet.setInitialText("Özel paylaşım ekranı açık kalsın.")
self.presentViewController(facebookSheet, animated: true, completion: nil)
} else {
var alert = UIAlertController(title: nil, message: "Facebook cihazınızda aktif değil. Ayarlardan paylaşım için aktifleştiriniz.", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Tamam", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
}
ve initiateFacebookShareView aksiyonu içerisinde SLComposeViewController'ı facebook paylaşımı için initiate ediyorum.
bu sayede kullanıcı shareViewController içerisinde facebook butonuna dokunduğunda shareViewController animated olarak kapatılacak ve daha sonra faceBook paylaşım ekranı açılacak.
istediğiniz de buydu sanırım değilmi.