我正在尝试为我的应用中的“公告”页面添加解析数据。我已经设置了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
}
答案 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