ソースはこれまでのものを流用します。
[Swift] NSURLを生成してSafari起動
http://qiita.com/senseiswift/items/70825c8dd4b8dd9d73f9
やること
- SLComposeViewControllerを使うためにSocialをimport
- テーブルの行数を追加
- テーブルの3行目に文言を追加
- セルタップ時に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っぽいことを書きたいです。