2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Swift] SLComposeViewControllerdでTwitter投稿

Last updated at Posted at 2015-09-03

ソースはこれまでのものを流用します。

[Swift] NSURLを生成してSafari起動
http://qiita.com/senseiswift/items/70825c8dd4b8dd9d73f9

やること

  1. SLComposeViewControllerを使うためにSocialをimport
  2. テーブルの行数を追加
  3. テーブルの3行目に文言を追加
  4. セルタップ時にTwitter投稿用SLComposeViewControler生成

Twitterの投稿部分

SLComposeViewControler
    // Twitter投稿用SLComposeViewControler生成
    let twitterVC:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)!
    // メッセージのセット
    twitterVC.setInitialText("(投稿したい文字列)")
    // Viewの表示
    self.presentViewController(twitterVC, animated: true, completion: nil)

ソース全文

SecnondViewController
import UIKit

// 1. SLComposeViewControllerを使うためにSocialをimport
import Social

class SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    
    @IBOutlet weak var tableView: UITableView!
    
    // ViewControllerから受け取る文字列を入れる変数
    var text: String?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        tableView.delegate = self
        tableView.dataSource = self
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    // 2. テーブルの行数を追加
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 3
    }
    
    // セルのテキストを追加
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")
        
        if (indexPath.row == 0)
        {
            // 受け取った文字列をセルに表示
            cell.textLabel?.text = text
            return cell
        }
        else if (indexPath.row == 1)
        {
            // テーブルの2行目に文言を追加
            cell.textLabel?.text = text! + "についてGoogleで調べる"
            return cell
        }
        else if (indexPath.row == 2)
        {
            // 3. テーブルの3行目に文言を追加
            cell.textLabel?.text = text! + "についてTwitterに投稿"
            return cell
        }
        
        return cell
    }
    
    func tableView(table: UITableView, didSelectRowAtIndexPath indexPath:NSIndexPath) {
        
        if (indexPath.row == 0)
        {
            self.dismissViewControllerAnimated(true, completion: nil)
        }
        else if (indexPath.row == 1)
        {
            // テーブルの2行目をタップした時にURLを生成してSafariを起動
            var url : NSString = "https://www.google.co.jp/search?q=" + text!
            var urlStr : NSString = url.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
            var searchURL : NSURL = NSURL(string: urlStr as String)!
            println(searchURL)
            
            if UIApplication.sharedApplication().canOpenURL(searchURL){
                UIApplication.sharedApplication().openURL(searchURL)
            }
        }
        else if (indexPath.row == 2)
        {
            // 4. Twitter投稿用SLComposeViewControler生成
            let twVC:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)!
            // メッセージのセット
            twVC.setInitialText("私は" + text! + "が好きです!")
            // Viewの表示
            self.presentViewController(twVC, animated: true, completion: nil)
        }
    }
}

参考ソース
https://github.com/senseiswift/tableviewtest/commit/5d4c46d7fa19adce8c2ea7266be6bf279ab29b5c

次回はもっとSwiftっぽいことを書きたいです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?