2015-06-01 44 views
14

我在UIViewController裏插入了一個tableview。但我的代碼不起作用。當我檢查時,我發現沒有任何的tableview函數沒有被調用。Swift - UITableView裏面的UIViewController,UITableView函數不叫

class CustomViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

     @IBOutlet weak var authorArticlesTableView: UITableView! 

     var authorid: Int! 
     var authorname: String! 
     var articles: [JSON]? = [] 

     func loadArticles(){ 
      let url = "http:here.com/" + String(authorid) + "/" 
      println(url) 
      Alamofire.request(.GET, url).responseJSON { (Request, response, json, error) -> Void in 
       if (json != nil){ 
        var jsonObj = JSON(json!) 
        if let data = jsonObj["articles"].arrayValue as [JSON]?{ 
         self.articles = data 
         self.authorArticlesTableView.reloadData() 
        } 
       } 
      } 
     } 
     override func viewDidLoad() { 
      super.viewDidLoad() 
      self.loadArticles() 
      println("viewDidLoad") 
     } 

     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
      println("numberOfRowsInSection") 
      return self.articles?.count ?? 0 
     } 

     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
      var cell = tableView.dequeueReusableCellWithIdentifier("CustomCell") as! CustomTableViewCell 
      cell.articles = self.articles?[indexPath.row] 
      println("cellForRowAtIndexPath") 
      return cell 
     } 


     func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
      performSegueWithIdentifier("WebSegue", sender: indexPath) 
      tableView.deselectRowAtIndexPath(indexPath, animated: true) 
     } 

任何解決方案?

感謝,

+1

您是否設置了委託和數據源? – Asaf

回答

39

你必須設置你的視圖控制器的表視圖委託/數據源:

添加到viewDidLoad的結尾:

authorArticlesTableView.delegate = self 
authorArticlesTableView.dataSource = self 
13

設置表delegatedataSource

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 
} 
0

有時,如果喲你忘了把UITableViewCell拖放到UITableView。 XCode不理解TableView有Cell。 默認情況下,當您將UITableView拖放到UIViewController中時。我看到UITableView有Cell。但是你需要將UITableViewCell拖放到UITableView中。

這是我的工作。