2015-10-28 2 views
0

Я пытаюсь добавить данные синтаксического анализа для страницы «Объявления» в моем приложении. Я создал страницы ViewController, добавил TableView и выполнил шаги, чтобы получить точную печать правильного количества строк. Проблема заключается в самом тексте. Я пытаюсь подключить его к UILabel для заголовка, но он не работает. Любая помощь приветствуется.XCode7, Swift 2, Population 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.you должен использовать tableView.dequeueReusableCellWithIdentifier («AnnouncementBlock», forIndexPath: indexPath), поскольку он не будет возвращать нуль на вас – Moriya

+0

3. Раскадровка или xib? – Moriya

+0

@ Анимация относится к основному виду или к представлению "announcementCellTableViewCell"? , Я изменил dequeureusablecellwithidentifier, но он не работал. Должно ли это быть «let singleCell: AnnouncementCellTableViewCell = tableView.dequeueReusableCellWithIdentifier (« AnnouncementBlock », forIndexPath: indexPath) as! AnnouncementCellTableViewCell« –

ответ

0

Если вы используете пользовательскую ячейку, изготовленную в Tableview в раскадровку, я думаю, что самый простой способ «HOKO вверх» этикетка, чтобы дать ему tag номер в окне свойств в раскадровке.

тогда в вас cellForRowAtIndexPath вы запрашиваете ярлык с тегом

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

Это вернуло много ошибок. –

+0

Это не очень похоже. Какие ошибки? Какие ошибки? Когда вы запускаете код или ошибки компиляции? – Moriya

0

код нужно вызвать registerClass:forCellReuseIdentifier: на Tableview для пользовательского класса клеток. Для ячейки из очереди, используйте 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? –

Смежные вопросы