2015-11-02 75 views
1

我不知道我的tableView: cellForRowAtIndexPath有什麼問題。它永遠不會因爲某種原因而被召喚。我已經調用了適當的委託和數據源。當我在cellForRowAtIndexPath函數下添加print("")行時,它在我模擬應用程序時從不出現。tableview:cellForRowAtIndexPath沒有被調用

謝謝您的高級。

這裏是我的整個頁面代碼:

class MainPageViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

var sportCells = [PFObject]() 


@IBOutlet weak var tableView: UITableView! 

@IBOutlet weak var profilePictureImageView: UIImageView! 
@IBOutlet weak var fullNameLabel: UILabel! 





override func viewDidLoad() { 
    super.viewDidLoad() 

    self.tableView.dataSource = self 
    self.tableView.delegate = self 

    //Do any additional setup after loading the view. 
} 
override func viewDidAppear(animated: Bool) { 
    updateSportsTable() 
    print("its happening") 
    let lastName = PFUser.currentUser()! ["last_name"] 
    if let firstName = PFUser.currentUser()?["first_name"] as? String { 
     self.fullNameLabel.text = "\(firstName) \(lastName)" 


    } 

    if let userPicture = PFUser.currentUser()?["profile_picture"] as? PFFile { 
     userPicture.getDataInBackgroundWithBlock { (imageData: NSData?, error: NSError?) -> Void in 
      if (error == nil) { 
       self.profilePictureImageView.image = UIImage(data:imageData!) 


      } 
     } 
    } 
} 
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    print("sportCells count is \(sportCells.count)") 
    return sportCells.count 

} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    print("data extracted1") 
    let cell = tableView.dequeueReusableCellWithIdentifier("sportCell") as! SportTableViewCell 
    print("data extracted") 
    let sportPost = self.sportCells[indexPath.row] 
    let user = sportPost["user"] as! PFUser 
    print("data extracted") 
    do { 
     try user.fetchIfNeeded() 
     print("its happening 3rd time") 
    } catch _ { 
     print("There was an error") 
    } 

    cell.sportTitle.text = sportPost["basketballTitle"] as? String 
    cell.sportLogo.text = sportPost["basketballLogo"] as? String 
    cell.numberOfPOTM.text = "5" 
    return cell 
} 



func updateSportsTable() { 
    let query = PFQuery(className: "Sports") 
    query.findObjectsInBackgroundWithBlock { (sportCells:[PFObject]?, error:NSError?) -> Void in 
     if error == nil { 
      self.tableView.reloadData() 
      print("its happening again") 
     } 


    } 



} 
+0

'sportCells.count'在'numberOfRowsInSection'中打印了什麼?另外,如果要在故事板或XIB中添加表格視圖,請嘗試刪除約束並重新添加它們。 – Abhinav

+0

sportCells.count打印0.我認爲它是因爲cellForRowAtIndexPath沒有被調用。我試着刪除約束條件,然後重新添加它們,看看會發生什麼,然後回到你身邊。謝謝 – oatout

+0

'sportCells.count == 0' - >你的問題。 http://stackoverflow.com/questions/33384433/uitableview-does-not-load-data/33384470#33384470 – anhtu

回答

0

由於從註釋證實,你的問題是在模型sportCells數據填充。

確保sportCells正確填充,然後在此之後調用self.tableView.reloadData

+0

如果sportCells被填充到cellForRowAtIndexPath下,它應該如何填充?我在這裏錯過了一個簡單的想法... – oatout

+0

我想我的問題是與這一行:query.findObjectsInBackgroundWithBlock {(sportCells:[PFObject] ?,錯誤:NSError?) - >無效.....如果我嘗試使用[AnyObject]而不是PFObject,Xcode崩潰並且所有代碼文本變成黑色... – oatout

+1

您從不在'cellForRowAtIndexPath'中加載模型。將數據加載到'viewDidLoad'中,然後調用'self.tableView.reloadData'。 – Abhinav

相關問題