2012-11-21 12 views
94

कुछ ऐप्स साझाकरण विकल्प के साथ आईओएस 6 में एक डिफ़ॉल्ट एक्शन शीट दिखाते हैं।उपलब्ध शेयर विकल्पों के साथ डिफ़ॉल्ट आईओएस 6 शेयर एक्शन शीट कैसे प्रदर्शित करें?

Social Framework में केवल दो वर्ग हैं, एक रचना के लिए और एक अनुरोध के लिए।

हालांकि मुझे जो मिला वह SLComposeViewController के साथ एक विशेष सेवा के लिए लिखने के बारे में है और यह दिखाने से पहले मुझे सेवा उपलब्ध होने पर हाथ से पूछना चाहिए। और फिर मुझे अपने आइकन के साथ अपनी खुद की एक्शन शीट बनाना होगा।

आईओएस 6 में ये ऐप्स इस डिफ़ॉल्ट शेयर विकल्प एक्शन शीट को कैसे दिखाते हैं? या वे एक ओपन सोर्स फ्रेमवर्क का उपयोग कर रहे हैं?

+0

मैं कस्टम आइकन के साथ शेयर शीट खोलना चाहता हूं जैसे wechat, weibo, qq और इसकी कार्यक्षमता को एकीकृत करता हूं, मैं यह कैसे कर सकता हूं? – RaviJSS

+0

बस इस लिंक को भी देखें .. http://stackoverflow.com/a/35267035/3908884 –

+0

[स्विफ्ट का उपयोग करके यहां एक मूल उदाहरण है] (http://stackoverflow.com/a/35931947) – Suragch

उत्तर

222

UIActivityViewController दूसरे उत्तर में कहा गया यह मामूली बनाता है। आपको बस इतना करना है कि वह टेक्स्ट/छवि/यूआरएल निर्दिष्ट करें जिसे आप साझा करना चाहते हैं और गतिविधि दृश्य नियंत्रक को सामान्य रूप से प्रस्तुत करना चाहते हैं और आईओएस स्वचालित रूप से सभी लागू साझाकरण सेवाओं को प्रदर्शित करेगा। उदाहरण:

ऑब्जेक्टिव-सी

- (void)shareText:(NSString *)text andImage:(UIImage *)image andUrl:(URL *)url 
{ 
    NSMutableArray *sharingItems = [NSMutableArray new]; 

    if (text) { 
     [sharingItems addObject:text]; 
    } 
    if (image) { 
     [sharingItems addObject:image]; 
    } 
    if (url) { 
     [sharingItems addObject:url]; 
    } 

    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil]; 
    [self presentViewController:activityController animated:YES completion:nil]; 
} 

स्विफ्ट

func share(sharingText: String?, sharingImage: UIImage?, sharingURL: URL?) { 
    let sharingItems:[AnyObject?] = [ 
             sharingText as AnyObject, 
             sharingImage as AnyObject, 
             sharingURL as AnyObject 
            ] 
    let activityViewController = UIActivityViewController(activityItems: sharingItems.flatMap({$0}), applicationActivities: nil) 
    if UIDevice.current.userInterfaceIdiom == .pad { 
     activityViewController.popoverPresentationController?.sourceView = view 
    } 
    present(activityViewController, animated: true, completion: nil) 
} 
+6

स्विफ्ट के लिए अच्छा संपादन संस्करण। मैं एक + = आइटम के लिए .append (आइटम) बदल दूंगा। अधिक तेज़-वाई –

+2

स्विफ्ट के नवीनतम संस्करण में, 'AnyObject []()' '[AnyObject]()' –

+5

के साथ 'AnyObject []() 'को प्रतिस्थापित करें, केवल सेटिंग (फेसबुक/ट्विटर), में संबंधित खातों में लॉग इन करने के बाद, फोटो ऐप/नोट्स ऐप में, विकल्प उपलब्ध हैं भले ही उपयोगकर्ता लॉग इन नहीं है, क्या आप कृपया समझा सकते हैं, ऐसा क्यों है? या कुछ और कामकाज है? –

39

इस UIActivityViewController उपयोग करने के लिए जोड़ें।

-(IBAction)shareButtonPressed:(id)sender { 

    NSLog(@"shareButton pressed"); 

    NSString *texttoshare = _txt; //this is your text string to share 
    UIImage *imagetoshare = _img; //this is your image to share 
    NSArray *activityItems = @[texttoshare, imagetoshare];  
    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 
    activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint]; 
    [self presentViewController:activityVC animated:TRUE completion:nil]; 
} 
+2

मेरे द्वारा पसंदीदा जवाब देने के बाद भी मुझे पसंदीदा जवाब दिया गया है। –

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