2015-10-28 29 views
0

我想爲我的應用上的「通知」頁面添加解析數據。我已經設置了ViewController頁面,添加了TableView,然後按照步驟準確地打印出正確數量的行。問題在於文本本身。我試圖將它連接到標題的UILabel,但它不工作。任何幫助表示讚賞。XCode7,Swift 2,用解析數據填充TableView

import UIKit 
import Parse 
import Bolts 

class ViewController: UIViewController, UITableViewDelegate { 

@IBOutlet var tableView: UITableView! 

var Header = [String]() 




let reuseIdentifier = "ContentCell" 
private let cellHeight: CGFloat = 210 
private let cellSpacing: CGFloat = 20 

@IBOutlet var barButton: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let navBar = self.navigationController!.navigationBar 
    navBar.barTintColor = UIColor(red: 6.0/255.0, green: 100.0/255.0, blue: 255.0/255.0, alpha: 1) 
    navBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 

    var query = PFQuery(className: "Announcements") 
    query.orderByDescending("createdAt") 
    query.findObjectsInBackgroundWithBlock { 
     (posts:[PFObject]?, error: NSError?) -> Void in 

     if error == nil { 
      //success fetching announcements 

      for alert in posts! { 
       print(alert) 
      self.Header.append(alert["Header"] as! String) 
      } 

      /***Reload The Table***/ 

      print(self.Header.count) 

      self.tableView.reloadData() 

     } else { 
      print(error) 

     } 
} 

} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 

    return Header.count 
    //turns announcements into rows 

} 

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

    let singleCell: AnnouncementCellTableViewCell = tableView.dequeueReusableCellWithIdentifier("AnnouncementBlock") as! AnnouncementCellTableViewCell 

    singleCell.HeaderText.text = Header[indexPath.row] 

    return singleCell 


} 
+0

1.您確定HeaderText與視圖中標籤的出口連接嗎? 2.你應該使用tableView.dequeueReusableCellWithIdentifier(「AnnouncementBlock」,forIndexPath:indexPath),因爲它不會返回零你 – Moriya

+0

3.故事板或xib? – Moriya

+0

@Animal是指主視圖還是「announcementCellTableViewCell」視圖? 。我改變了dequeureusablecellideidentifier,但它沒有奏效。它應該是「let singleCell:AnnouncementCellTableViewCell = tableView.dequeueReusableCellWithIdentifier(」AnnouncementBlock「,forIndexPath:indexPath)as!AnnouncementCellTableViewCell」 –

回答

0

如果您正在使用TableView中的故事板做了一個自定義單元格,我認爲最簡單的方法來「葆光了」標籤是給它在故事板的屬性窗口中tag數。

然後在你cellForRowAtIndexPath你與標籤

if let label = cell.viewWithTag(tag: tagNumber) as? UILabel { 
    label.text = Header[indexPath.row] 
} 
+0

這返回了很多錯誤。 –

+0

這不是什麼線索。什麼錯誤?什麼樣的錯誤?當你運行代碼或編譯錯誤? – Moriya

0

代碼需要呼籲的tableView registerClass:forCellReuseIdentifier:爲您的自定義單元格類獲取的標籤。出列的單元格,使用dequeueReusableCellWithIdentifier:indexPath:

// in or around viewDidLoad() 
self.tableView.registerClass(AnnouncementCellTableViewCell.self, forCellReuseIdentifier: "AnnouncementBlock") 

// in cellForRowAtIndexPath 
let singleCell = tableView.dequeueReusableCellWithIdentifier("AnnouncementBlock", forIndexPath:indexPath) as AnnouncementCellTableViewCell 
+0

在我的AnnouncementCellTableViewCell.swift文件中是否有任何內容? –

+0

沒有要求,但它是一個放置給定模型元素的邏輯單元的好地方。 – danh

1

我看到你是否使用正確的電池聲明的變量

let reuseIdentifier = "ContentCell" 

如果使用正確的電池,並已正確連接的HeaderText標籤出口與AnnouncementCellTableViewCell(確保它與細胞無法查看已連接),你都可以從解析爲標題的值,那麼這應該工作:

func tableView(tableView: UITableView, cellForRowAtIndexPath  indexPath: NSIndexPath) -> UITableViewCell{ 
     let cell = tableView.dequeueReusableCellWithIdentifier("AnnouncementBlock", forIndexPath: indexPath) as! AnnouncementCellTableViewCell 
     cell.HeaderText.text = Header[indexPath.row] 
     return cell 
} 

希望這個幫助。

+0

在我的AnnouncementCellTableViewCell.swift文件中是否有任何內容? –