2012-11-15 390 views
12

我試圖將使用UIDocumentInteractionController OpenIn Menu在我的應用程序中生成的圖像發送給其他應用程序。我保存的UIImage到磁盤使用此代碼:UIDocumentInteractionController OpenInMenu崩潰iOS應用程序

fileJpeg = [NSTemporaryDirectory() stringByAppendingPathComponent:@"activeImage.jpg"]; 
    jpegFileURL = [NSURL fileURLWithPath:fileJpeg]; 

    UIImage *imageToWrite = image; 

    [UIImageJPEGRepresentation(imageToWrite, 1.0) writeToFile:fileJpeg atomically:YES]; 

我訪問jpegFileURL的另一種方法,通過使用MFMailComposeViewController電子郵件發送圖像,和它完美的作品,所以NSURL是有效的。但是,當我嘗試將圖像發送到另一個應用程序(只是發送,我沒有實現任何預覽功能)應用程序崩潰。這裏是方法:

- (IBAction)openInOtherApp:(id)sender{ 

UIDocumentInteractionController *controller = [UIDocumentInteractionController interactionControllerWithURL: jpegFileURL]; 
controller.delegate = self; 
CGRect rect = self.view.frame; 
[controller presentOpenInMenuFromRect:rect inView:self.view animated:YES]; 
} 

顯示打開菜單。當我點擊任何可用應用程序的按鈕時,它崩潰。在iOS6(6.0.1)和iOS5(5.1.1)設備上測試時,控制檯中沒有輸出錯誤信息(通常是EXC_BAD_ACCESS(code = 1,address ... crash),但在iOS 4.3設備上應用程序是4.3向上兼容)我在控制檯收到此錯誤:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType actionSheet:clickedButtonAtIndex:]: unrecognized selector sent to instance 0x16b7f0' 

我一直在閱讀蘋果的UIDocumentInteractionController和UIDocumentInteractionControllerDelegate文件,我在我的課@interface實現,但沒有可選的委託方法似乎需要我的需要或在這次碰撞中有幫助。

無法找出有什麼不對或缺失的,任何幫助將不勝感激

回答

35

發現問題,感謝this answer。這是一個記憶的東西。我正在使用UIDocumentInteractionController作爲本地實例變量,而ARC很快將其釋放。把它變成一個類屬性,現在一切正常。

2

你必須在@interface後您的.h文件中定義UIDocumentInteractionController *控制器... 像

@interface sampleView <UIDocumentInteractionControllerDelegate> 
{ 
    UIDocumentInteractionController *controller; 
} 

應用需要具有從整個模塊訪問這個變量,不僅在程序的地方叫從。