FabricのサンプルでTwitterのタイムラインを表示する
先の記事でTwitterのタイムラインを表示できるようになりましたが、Fablicにはもっと簡単にタイムラインを表示するためのサンプルがありまして、これを使うことで容易になる・・・はずでした。
ただワークショップムービーの方法ではうまく行かなくて頓挫してたのですが、先の記事での調査の結果、問題になっている箇所が判明し、うまく動作させることができました。
修正コード
下記のようにTWTRAPIClientクラスにUserIDを渡してやることでうまく動作するようになりました。
MainViewController.swift
import UIKit
import TwitterKit
class MainViewController: TWTRTimelineViewController {
var userId: String?
override func viewDidLoad() {
super.viewDidLoad()
let client = TWTRAPIClient(userID: self.userId)
self.dataSource = TWTRUserTimelineDataSource(screenName: "fabric", APIClient: client)
}
}
先の記事同様にLoginAPIをコールしたあとに返ってくるTWTRSessionデータからUserIDを取得して渡してやればOKです。
LoginViewController.swift
import UIKit
import TwitterKit
class LoginViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let logInButton = TWTRLogInButton { (session, error) in
if session != nil {
self.performSegueWithIdentifier("main", sender: session!.userName)
} else {
NSLog("Login error: %@", error!.localizedDescription);
}
}
// TODO: Change where the log in button is positioned in your view
logInButton.center = self.view.center
self.view.addSubview(logInButton)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let session = sender as? TWTRSession
let dest = segue.destinationViewController as! MainViewController
dest.title = session!.userName
dest.userId = session?.userID
}
}
超簡単ですね。
ムービーにあるようにUIViewControllerのviewをUITableViewに変更するなど、ややトリッキーな操作が必要ですが、それを考えてもこんなに簡単に実装できるのは魅力的です。
最後に
今年最後の記事となりますが、まったりコード書きながら過ごす年越しも悪くないですね。
皆様、良いお年を。