2014-10-24 22 views
6

iOS 8 için bazı kodları güncelleme. Sadece iOS 7'de sorunsuz çalışan bir iPad uygulamasında bu hatayı yaşadım. Paylaşım seçenekleri seçeneklerini sunmak için bir UIActionSheet kullanıyorum , Facebook ve Twitter bana heck veriyor.SLComposeViewController - iOS 8'de "Sunulmaya teşebbüs" hatalar

SLComposeViewController *facebookShare = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 
//I add an image if there is one   
//I set some initial text  
[self presentViewController:facebookShare animated:YES completion:nil]; 

Oldukça düz ileri şeyler. Ama iOS 8 alıyorum

aşağıda Uyarı: PostDetailViewController üzerine 0x1a238760>: SLComposeViewController sunmak girişimi 0x180c5200> zaten sunuyor aşağıda bu hatayı gördüm

(null) ve her şeyi anladım. Ancak benim PostDetailViewController zaten zaten (null) sunuluyor mu?!? Yani temelde hiç bir şeyle meşgul değil mi?

SLComposeViewController'ı diğer VC'lerden içten sunmayı denedim ancak Attempt to present error'u almaya devam ediyorum.

UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController , and self.navigationController'dan hiçbir şekilde yararlanmaya çalıştım. Ben de SLComposeViewController gerçekten çalışır ama SLComposeViewController kapalı ve kullanıcı geri basana kadar orada kalırsa boş bir arka plan iter sonra istenmeyen sonuçlar verir SLComposeViewController itmeye çalıştım.

Herhangi bir müşteri adayı harika olurdu! Şimdiden teşekkürler.

DÜZENLEME 1:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{ 

     if (buttonIndex == 0)[self shareWithTwitter]; 
     if (buttonIndex == 1)[self shareWithFacebook]; 
     if (buttonIndex == 2)[self shareWithiMessage]; 
     if (buttonIndex == 3)[self shareWithEmail]; 
     if (buttonIndex == 4)[self SaveImageToCameraRoll]; 

} 


-(void)shareWithFacebook{ 
    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 
     //add animal URL 
     SLComposeViewController *facebookShare = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 
     [facebookShare addURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.somelink.com/detail.aspx?id=%@",theAnimal.AnimalID]]]; 

     //add image if there is one 
     if (theAnimal.PhotoUrl) { 
      [facebookShare addImage:imageView1.image]; 
     } 

     //set initial text 
     if ([theAnimal.Sex isEqualToString:@"Male"]) { 
      [facebookShare setInitialText:[NSString stringWithFormat:NSLocalizedString(@"pop_his_fb_share", nil),theAnimal.Name]]; 
     }else [facebookShare setInitialText:[NSString stringWithFormat:NSLocalizedString(@"pop_her_fb_share", nil),theAnimal.Name]]; 

     [self presentViewController:facebookShare animated:YES completion:nil]; 


    } else { 
     UIAlertView *alert = [[UIAlertView alloc]initWithTitle:[NSString stringWithFormat:NSLocalizedString(@"alert", nil)] message:[NSString stringWithFormat:NSLocalizedString(@"details_no_fb_account", nil)] delegate:nil cancelButtonTitle:[NSString stringWithFormat:NSLocalizedString(@"dismiss", nil)] otherButtonTitles:nil, nil]; 

     [alert show]; 
    } 
} 
+0

Gönderdiğiniz kodun içerdiği tüm yöntemi göstermeniz gerekir; bu nedenle, onu nerede kullandığınızı anlatabiliriz. – rdelmar

+0

Yani actionSheet temsilci yönteminden arıyorum [self shareWithFacebook]; – kev

+0

Kodunuzda yanlış bir şey göremiyorum. Basitleştirilmiş bir versiyonunu denedim ve benim için iyi çalıştı. PostDetailViewController başka bir şey sunabilir mi? Kurduğunuz herhangi bir göreviniz var mı? – rdelmar

cevap

23

iOS 8 ActionSheet aslında dolayısıyla hata mesajı, (daha önce olduğu takdirde en azından ben bilmiyordum) bir ViewController kabul edilir öğrendim. Bir düğme ben kullanıyordum temsilci yöntemine tıklandığında ActionSheet alınmaları için çalışıyor:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 

Bu temsilci tıklamasında bana düğme indeksini alır ancak ActionSheet hala görülebilir. Bir tıklama gerçekleştiğinde, ViewController sunumu ActionSheet'i atlatmaya çalışır ve hatayı alırım.

Ben açık için:

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex 

(Not: didDismiss) sunulması ViewController ActionSheet görevden kadar Yani benim paylaşım yöntemleri olarak adlandırılan değildir, o zaman pay ViewController sunmak ücretsiz! Umarım bu başka birine yardımcı olur. Şerefe!

+1

Sadece bu konuya kendim girdim - çok fazla arama yaptıktan sonra çözümünüzü buldum. Mükemmel cevap - kabul edildi olarak işaretlemelisiniz - Teşekkürler! – markt

+0

gerçekten işe yarıyor ... + 1 –

+0

Sweet !! Teşekkürler. –

0

Sadece meseleyi aşağıdakileri deneyin.

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
     [self presentViewController:fbViewController animated:YES completion:nil]; 
    }]; 
+0

Ona bir şans vermeliyim. Aslında başka bir çözüm buldum, feryat yayınladı. – kev