2015-02-16 11 views
7

कहा जाता है, जब इस ऐप में आईफोन पर यूआईएक्टिविटी व्यू कंट्रोलर को कॉल किया जाता है, तो यह पूरी तरह से काम करता है, लेकिन जब आईपैड पर कॉल किया जाता है, तो ऐप क्रैश हो जाता है।आईओएस 8 आईपैड ऐप क्रैश जब UIActivityViewController को

func shareButtonPress() { 

    //when the share button is pressed, default share phrase is added, cropped image of highscore is added 

    var sharingItems = [AnyObject]() 

    var shareButtonHighscore = NSUserDefaults.standardUserDefaults().objectForKey("highscore") as Int! 

    sharingItems.append("Just hit \(shareButtonHighscore)! Beat it! #Swath") 

    UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, 0); 
    self.view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true) 
    var image:UIImage = UIGraphicsGetImageFromCurrentImageContext(); 

    UIGraphicsEndImageContext(); 

    sharingItems.append(image) 

    let activityViewController = UIActivityViewController(activityItems: sharingItems, applicationActivities: nil) 

    var barButtonItem: UIBarButtonItem! = UIBarButtonItem() 

    activityViewController.excludedActivityTypes = [UIActivityTypeCopyToPasteboard,UIActivityTypeAirDrop,UIActivityTypeAddToReadingList,UIActivityTypeAssignToContact,UIActivityTypePostToTencentWeibo,UIActivityTypePostToVimeo,UIActivityTypePrint,UIActivityTypeSaveToCameraRoll,UIActivityTypePostToWeibo] 

    self.presentViewController(activityViewController, animated: true, completion: nil) 

} 

आप देख सकते हैं, मैं स्विफ्ट में प्रोग्रामिंग हूँ, SpriteKit फ्रेमवर्क में, और मुझे समझ नहीं आता क्यों ऐप्स क्रैश हो: नीचे दिए गए कोड मैं प्रयोग किया जाता है।

मैं यह त्रुटि प्राप्त कर रहा हूँ:

Terminating app due to uncaught exception 'NSGenericException', reason: 'UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController: 0x7fc7a874bd90>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.' 

क्या मैं इस समस्या को ठीक करने के लिए कर सकते हैं?

+0

> इस समस्या को ठीक करने के लिए मैं क्या कर सकता हूं? - 1. त्रुटि संदेश पढ़ें। 2. 'UIPopoverController' – Mundi

उत्तर

26

UIActivityViewController पेश करने से पहले, में जोड़ने कोड की इस पंक्ति:

activityViewController.popoverPresentationController?.sourceView = self.view 

इस तरह, दृश्य नियंत्रक जानता है, जिसमें GameViewController के फ्रेम में प्रदर्शित करने के

+0

संबंधित उत्तर। http://stackoverflow.com/a/34595918 – Suragch

3

आप त्रुटि यह कहता है कि यह कैसे तय करने के लिए पढ़ने के लिए हैं, तो आप barButtonItem या sourceView जहाँ से, से पॉपओवर पेश करने के लिए अपने मामले में निर्धारित करने की आवश्यकता:

func shareButtonPress(pressedButton: UIBarButtonItem) { 

    ... 

    activityViewController.popoverPresentationController.barButtonItem = pressedButton 

    self.presentViewController(activityViewController, animated: true, completion: nil) 
} 
+0

पर दस्तावेज़ों की जांच करें अब मुझे यह त्रुटि मिल रही है:' [MyGame.GameViewController shareButtonPress]: अज्ञात चयनकर्ता उदाहरण 0x15f8c610'' – tdh

+0

पर भेजा गया यह सही करने के लिए मैं क्या कर सकता हूं? मैं UIBarButtonItem को वास्तविक बटन के नाम से प्रतिस्थापित नहीं कर सकता, क्योंकि वास्तविक बटन गेमसेन में परिभाषित किया गया है। – tdh

+0

आप UIBarButtonItem को लक्ष्य कैसे जोड़ते हैं? अधिक जानकारी के साथ – Steve

1

रहे हैं टी। wo विकल्प, कार्रवाई UIBarButtonitem या UIButton से आई जो एक UIView है।

func shareButtonPress() { 

    ... 

    if let actv = activityViewController.popoverPresentationController { 
     actv.barButtonItem = someBarButton // if it is a UIBarButtonItem 

     // Or if it is a view you can get the view rect 
     actv.sourceView = someView 
     // actv.sourceRect = someView.frame // you can also specify the CGRect 
    } 

    self.presentViewController(activityViewController, animated: true, completion: nil) 
} 

आप func shareButtonPress(sender: UIBarButtonItem) या func shareButtonPress(sender: UIButton)

1

मैं स्विफ्ट 3 के लिए जोड़ा की तरह अपने कार्य करने के लिए एक प्रेषक जोड़ने के लिए हो सकता है:

activityViewController.popoverPresentationController?.sourceView = self.view 

मेरी समस्या का समाधान हो।

संबंधित मुद्दे