2012-11-21 27 views
94

Một số ứng dụng hiển thị trang tính mặc định trong iOS 6 với tùy chọn chia sẻ.Làm cách nào để hiển thị bảng tác vụ chia sẻ iOS 6 mặc định với các tùy chọn chia sẻ có sẵn?

Social Framework chỉ có hai lớp, một để soạn và một cho yêu cầu.

Những gì tôi tìm thấy mặc dù là về soạn cho một dịch vụ cụ thể với SLComposeViewController và trước khi hiển thị này tôi phải truy vấn bằng tay nếu dịch vụ có sẵn. Và sau đó tôi cũng phải tạo trang tính của riêng mình với các biểu tượng riêng.

Các ứng dụng này hiển thị trang hành động tùy chọn chia sẻ mặc định này trong iOS 6 như thế nào? Hay họ đang sử dụng một khung nguồn mở?

+0

tôi muốn mở bảng chia sẻ với biểu tượng tùy chỉnh như wechat, weibo, qq và tích hợp chức năng của nó, làm cách nào tôi có thể thực hiện việc này? – RaviJSS

+0

Chỉ cần kiểm tra liên kết này cũng .. http://stackoverflow.com/a/35267035/3908884 –

+0

[Đây là ví dụ cơ bản sử dụng Swift] (http://stackoverflow.com/a/35931947) – Suragch

Trả lời

222

Các UIActivityViewController được nêu trong câu trả lời khác làm cho điều này tầm thường. Tất cả những gì bạn phải làm là chỉ định văn bản/hình ảnh/URL mà bạn muốn chia sẻ và trình bày bộ điều khiển chế độ xem hoạt động một cách bình thường và iOS sẽ tự động hiển thị tất cả các dịch vụ chia sẻ áp dụng. Ví dụ:

Objective-C

- (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]; 
} 

Swift

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

Chỉnh sửa đẹp cho Swift phiên bản. Tôi muốn thay đổi .append (mục) cho mục + =. Nhìn nhanh hơn y –

+2

Trong phiên bản mới nhất của Swift, thay thế 'AnyObject []()' bằng '[AnyObject]()' –

+5

Chỉ hoạt động sau khi đăng nhập vào tài khoản tương ứng trong cài đặt (facebook/twitter), Nhưng Trong ứng dụng ảnh/ghi chú ứng dụng, các tùy chọn có sẵn ngay cả khi người dùng không đăng nhập, Bạn có thể giải thích tại sao không? Hoặc có một số cách giải quyết khác? –

39

Thêm này để sử dụng 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

Câu trả lời ưa thích cho tôi vì bạn cũng hiển thị loại trừ. –

Các vấn đề liên quan