Skip to content

Instantly share code, notes, and snippets.

@KentarouKanno
Last active August 12, 2016 17:49
Show Gist options
  • Save KentarouKanno/f796792ea9ac32829dbc2c260f8a56cb to your computer and use it in GitHub Desktop.
Save KentarouKanno/f796792ea9ac32829dbc2c260f8a56cb to your computer and use it in GitHub Desktop.
SLComposeViewController

SLComposeViewController

★ 画像をダウンロードしてその画像をTwitter投稿画面に添付する

import UIKit
import Social

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func pushTweetButton(sender: UIButton) {
        
        // 画像ダウンロード
        let url = NSURL(string: "https://teratail.com/uploads/contributed_images/78379419b2c58363c546e3e6e094a8c9.png")
        let config = NSURLSessionConfiguration.defaultSessionConfiguration()
        let session = NSURLSession(configuration: config)
        let req = NSURLRequest(URL: url!)
        
        let task = session.dataTaskWithRequest(req, completionHandler: { (data, response, error) in
            
            if let imageData = data , image = UIImage(data: imageData) {
                // ダウンロード成功時
                dispatch_async_main {
                    // メインスレッドから呼び出し
                    self.openTweetVC(image)
                }
                
            } else {
                // エラー処理
                print("Error!")
            }
        })
        task.resume()
    }
    
    
    func openTweetVC(image: UIImage) {
        let twitterVC = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
        twitterVC.addImage(image)
        twitterVC.setInitialText("Message")
        presentViewController(twitterVC, animated: true, completion: nil)
    }
}

func dispatch_async_main(block: () -> ()) {
    dispatch_async(dispatch_get_main_queue(), block)
}

★ Simple Twitter, Facebook

import UIKit

class ViewController: UIViewController {
    
    var selectImage: UIImage!
    @IBOutlet weak var textField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func tweetButton(sender: UIButton) {
        post(self, text: textField.text!, image: UIImage(named: "swift"))
    }
    
    func post(viewController: UIViewController, text: String, image: UIImage? = nil) {
        
        //  let composeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
        let composeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
        composeViewController.setInitialText(text)
        composeViewController.addImage(image)
        viewController.presentViewController(composeViewController, animated: true, completion: nil)
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment