XCode7,Swift 2,使用Parse数据填充TableView

时间:2015-10-28 01:06:20

标签: ios uitableview parse-platform swift2 xcode7

我正在尝试为我的应用中的“公告”页面添加解析数据。我已经设置了ViewController页面,添加了TableView,并按照步骤使其准确打印正确的行数。问题在于文本本身。我试图将它连接到UILabel for the Header但它不起作用。任何帮助表示赞赏。

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


}

3 个答案:

答案 0 :(得分:1)

我看到你宣布了一个变量

let reuseIdentifier = "ContentCell"

您使用的是正确的手机吗?

如果您正在使用正确的单元格并且已将HeaderText标签插座与AnnouncementCellTableViewCell正确连接(确保它与单元格无法连接),并且您从Parse for Header获取值,那么这应该有效:

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
 }

希望得到这个帮助。

答案 1 :(得分:0)

如果您在故事板中使用tableView中制作的自定义单元格,我认为“标记”标签的最简单方法是在故事板的属性窗口中为其指定tag

然后在你cellForRowAtIndexPath中,您使用标记

获取标签
if let label = cell.viewWithTag(tag: tagNumber) as? UILabel {
    label.text = Header[indexPath.row]
}

答案 2 :(得分: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