2012-10-26 17 views
7

UIActivityViewController kullanarak benim app yeni iOS 6 paylaşım işlevselliği eklemek çalışıyorum. Paylaşmak istediğim bazı metinler var ve E-posta'yı seçtikleri takdirde, e-postanın Konusunu otomatik olarak ayarlamak istiyorum.UIActivityViewController çöküyor, NSCFConstantString _beforeActivity tanınmayan seçici örneğin

[694:907] items=(
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor accumsan mi eu mollis. Fusce condimentum dictum lectus, eu ultrices urna vulputate eu." 
) 
[694:907] -[__NSCFConstantString _beforeActivity]: unrecognized selector sent to instance 0x3ad971c8 
[694:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString _beforeActivity]: unrecognized selector sent to instance 0x3ad971c8' 
*** First throw call stack: 
(0x35add2a3 0x37a1497f 0x35ae0e07 0x35adf531 0x35a36f68 0x361dc7a3 0x361dc52d 0x36067595 0x36434d31 0x3642fe07 0x2990b 0x361330ad 0x36133135 0x361330ad 0x3613305f 0x3613303d 0x361328f3 0x36132de9 0x3605b5f9 0x36048809 0x36048123 0x37bd15a3 0x37bd11d3 0x35ab2173 0x35ab2117 0x35ab0f99 0x35a23ebd 0x35a23d49 0x37bd02eb 0x3609c301 0x1ef9d 0x1ef30) 
libc++abi.dylib: terminate called throwing an exception 

ben bu çalıştırıyorum iOS6 ile bir iPad 2: Burada

NSArray *activityItems = @[resultString]; 
NSLog(@"items=%@", activityItems); 

NSArray *acitivities = @[UIActivityTypeMail, UIActivityTypeMessage, UIActivityTypePrint, UIActivityTypePostToFacebook, UIActivityTypeCopyToPasteboard]; 

UIActivityViewController *activityController = 
    [[UIActivityViewController alloc] initWithActivityItems:activityItems 
             applicationActivities:activities]; 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    self.popover = [[UIPopoverController alloc] initWithContentViewController:activityController]; 
    // the line above is where the error happens. 
    [self.popover presentPopoverFromBarButtonItem:self.emailResultsButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
} else { 
    [self presentViewController:activityController 
         animated:YES 
        completion:nil]; 
} 

hata mesajı içeren kod çıktısıdır. Herhangi bir fikir?

DÜZENLEME: Etkinlikler dizisini sağlamazsam görünür, her şey iyi çalışıyor gibi görünür. Hala problemi daraltıyor.

+0

ARC'yi kapatırsanız sorun devam ederse? (Evet tahmin ediyorum) –

+0

ARC'nin kapatılması, bir düğmeyi çevirmek gibi değil ... ama oynamaya devam ettim. Faaliyetler dizisini sağlamadığımda sorun gider gibi görünüyor. –

+0

iyi, sadece derleyici bayrağını geçici olarak kapatın. Bellek sızıntılarına aldırmayın. –

cevap

16

istisna her şeyi söylüyor:

applicationActivities

:

NSArray *acitivities = @[UIActivityTypeMail, UIActivityTypeMessage, UIActivityTypePrint, UIActivityTypePostToFacebook, UIActivityTypeCopyToPasteboard]; 

dokümantasyon yöntemi UIActivity nesnelerin listesini beklediğini söyledi: Sen dizeleri bir dizide geçiyoruz

Uygulamanızın desteklediği özel hizmetleri temsil eden bir dizi UIActivity nesnesi. Bu parametre sıfır olabilir.

Bu durumun özel etkinlikleri için olduğunu unutmayın; Örneğin. Mevcut hizmetlere ek olarak kendi DropBox entegrasyonunuzu da sunmak istiyorsanız.

DÜZENLEME: aktivite tip gelince, sadece UIActivity.activityType, UIActivityItemProvider.activityType, UIActivityViewController.excludedActivityTypes ve -[UIActivityItemSource activityViewController:itemForActivityType:] kullanılmak üzere görünür.

+0

Aaaaand örneğine uygun sokağa geçtiğinizi kontrol edin, burada bir kazanan var! +1. –

+0

Teşekkürler, buydu. Şimdi, Facebook'un listede neden görünmediğini anlamak zorundayım. Belki bu cihazda Facebook'a giriş yapmadım. –

+4

ObjC'nin Arrays yazmasını isterdim, bu yüzden bu problemi olmazdı. NSArray bunu tamamen önleyecekti. –

İlgili konular