2015-03-06 3 views
5

Я думал, что Twitter Kit должен был помочь разработчикам интегрировать Twitter в несколько строк кода. По меньшей мере, онлайн-документация оставляет желать лучшего. Я просто пытаюсь отобразить временную шкалу одного пользователя в своем приложении в контроллере табличного представления. Я хочу только чтение, только гостевой доступ к временной шкале. В приведенной ниже копии/вставке из онлайн-документации просто отображаются две ячейки, заполненные серым изображением и логотипом twitter, но без твитов. Что не так? БлагодаряTwitter kit - iOS

import UIKit 
import TwitterKit 

class TwitterViewController: UITableViewController, TWTRTweetViewDelegate { 

    let tweetTableReuseIdentifier = "TweetCell" 
    // Hold all the loaded Tweets 
    var tweets: [TWTRTweet] = [] { 
     didSet { 
      tableView.reloadData() 
     } 
    } 
    let tweetIDs = ["20", // @jack's first Tweet 
     "510908133917487104"] // our favorite bike Tweet 

    override func viewDidLoad() { 
     // Setup the table view 
     tableView.estimatedRowHeight = 150 
     tableView.rowHeight = UITableViewAutomaticDimension // Explicitly set on iOS 8 if using automatic row height calculation 
     tableView.allowsSelection = false 
     tableView.registerClass(TWTRTweetTableViewCell.self, forCellReuseIdentifier: tweetTableReuseIdentifier) 

     Twitter.sharedInstance().logInGuestWithCompletion { guestSession, error in 
      if (guestSession != nil) { 
       // make API calls that do not require user auth 
      } else { 
       println("error: \(error.localizedDescription)"); 
      } 
     } 
     // Load Tweets 
     Twitter.sharedInstance().APIClient.loadTweetsWithIDs(tweetIDs) { tweets, error in 
      if let ts = tweets as? [TWTRTweet] { 
       self.tweets = ts 
      } else { 
       println("Failed to load tweets: \(error.localizedDescription)") 
      } 
     } 
    } 

    // MARK: UITableViewDelegate Methods 
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return self.tweets.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let tweet = tweets[indexPath.row] 
     let cell = tableView.dequeueReusableCellWithIdentifier(tweetTableReuseIdentifier, forIndexPath: indexPath) as TWTRTweetTableViewCell 
     cell.tweetView.delegate = self 
     return cell 
    } 

    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     let tweet = tweets[indexPath.row] 
     return TWTRTweetTableViewCell.heightForTweet(tweet, width: CGRectGetWidth(self.view.bounds)) 
    } 
} 

ответ

2

Вам нужно позвонить: cell.configureWithTweet(tweet)

в tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)

+0

Спасибо ваш ответ мне помогает :) я могу задать вопрос: откуда мы можем получить идентификатор ЧИРИКНУТЬ в? – Mariam

+4

ссылка на github уже недействительна. – user1171911

2

Стивен здесь, один из разработчиков Twitter Kit.

Лучший способ сделать это сейчас - подкласс TWTRTimelineViewController и установить свойство dataSource.

class UserTimelineViewController: TWTRTimelineViewController, TWTRTweetViewDelegate { 

    convenience init() { 
    // Show a timeline of @jack's Tweets 
    let dataSource = TWTRUserTimelineDataSource(screenName: "jack", APIClient: TWTRAPIClient()) 
    self.init(dataSource: dataSource) 

    // Set the title for Nav bar 
    self.title = "@\(dataSource.screenName)" 
    } 

    func tweetView(tweetView: TWTRTweetView, didSelectTweet tweet: TWTRTweet) { 
    // Log a message whenever a user taps on a tweet 
    print("Selected tweet with ID: \(tweet.tweetID)") 
    } 

} 

Screenshot of User Timeline

+0

эй Стивен, один быстрый вопрос. Как насчет того, если я хотел бы настроить просмотр ячеек или показать твиты в нескольких разделах, что я должен использовать? –

+0

Hi Steven Спасибо, что нашли время, чтобы объяснить. Ваши отзывы очень ценятся. –

+0

Параметры настройки для 'TWTRTimelineViewController' чрезвычайно ограничены, но это самый простой способ показать полную шкалу времени пользователя. Для 'UITableView' вы застряли бы с методом OP, и вам нужно будет знать твиты ids твитов, которые вы хотите отобразить, и которые, вероятно, будут связаны с использованием JSON API и/или другой сторонней библиотеки. Любые другие предложения @StevenHepting? – Annjawn

Смежные вопросы