2015-03-06 31 views
5

Myślałem, że Twitter Kit miał pomóc programistom zintegrować Twittera w kilku linijkach kodu. Dokumentacja online jest co najmniej słaba. Po prostu próbuję wyświetlić oś czasu pojedynczego użytkownika w mojej aplikacji w kontrolerze widoku tabeli. Chcę tylko do odczytu, dostęp tylko dla gości do osi czasu. Poniższe kopiuj/wklej z dokumentacji online po prostu wyświetla 2 komórki wypełnione wyszarzonym obrazem i logo twitter, ale bez tweetów. Co jest nie tak? DziękiZestaw Twitter - 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)) 
    } 
} 

Odpowiedz

2

Trzeba zadzwonić: cell.configureWithTweet(tweet)

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

+0

Dzięki Twoja odpowiedź mi pomaga :) Mogę zadać pytanie: skąd możemy uzyskać identyfikator Tweet za? – Mariam

+4

link do github nie jest już ważny. – user1171911

2

Steven tutaj, jeden z twórców Kit Twitterze.

Najlepszym sposobem na zrobienie tego teraz jest podklasa TWTRTimelineViewController i ustawienie właściwości 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

Hej Steven, jedno szybkie pytanie. Co jeśli chciałbym dostosować widok komórki lub wyświetlić tweety w wielu sekcjach, z czego powinienem skorzystać? –

+0

Witaj Steven Dziękuję za poświęcenie czasu na wyjaśnienia. Twoje odpowiedzi są bardzo doceniane. –

+0

Opcje dostosowywania dla 'TWTRTimelineViewController' są bardzo ograniczone, ale jest to najprostszy sposób, aby pokazać pełną oś czasu użytkownika. W przypadku "UITableView" utknąłbyś w metodzie OP i będzie musiał znać tweety identyfikacyjne tweetów, które chcesz wyświetlić, i które prawdopodobnie będą wymagały użycia interfejsów API JSON i/lub innej biblioteki stron trzecich. Wszelkie inne sugestie @StevenHepting? – Annjawn