UITableView变量为nil

时间:2014-08-22 18:45:39

标签: ios swift uitableview ios8

我正在尝试使用来自网络的数据设置一个非常简单的表格视图。我不明白为什么我的UITableView实例是零。这使我无法使用来自网络的数据重新加载表格数据。

如果我使用静态数据var songs: [String] = ["title1", "title2", "title3"]而不是从网络中提取,那么一切正常。

我正在使用Xcode 6 Beta 6。

import UIKit

class SongsViewController: UITableViewController, UITableViewDelegate, UITableViewDataSource {
  @IBOutlet var songsTableView : UITableView!

  var songs: [AnyObject] = []

  override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    self.getListOfSongs()

    // self.songsTableView is nil here.

//    self.songsTableView.dataSource = self
//    self.songsTableView.delegate = self
  }

  override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
  }

  override func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
    return 1
  }

  override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
    return self.songs.count
  }

  override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
    let cell = UITableViewCell(style: .Subtitle, reuseIdentifier: nil)

    cell.textLabel.text = self.songs[indexPath.row] as String

    return cell
  }

  override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
    println("You selected cell #\(indexPath.row)!")
  }

  func getListOfSongs () {
    SonidoAPIClient.sharedInstance.getSongs(success: {(data: AnyObject) -> Void in
      println("Got list of songs: \(data)")

      self.songs = data["songs"] as [AnyObject]

      self.songsTableView.reloadData()     // self.songsTableView is nil here so error is thrown.
      }, failure: {
        println("Could not get song titles and ids!")
    })
  }
}

0 个答案:

没有答案