J'ai inséré une vue de table dans un UIViewController. Mais mon code ne fonctionne pas. Lorsque j'ai vérifié, j'ai constaté qu'aucune des fonctions de table ne sont appelées.
class CustomViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var authorArticlesTableView: UITableView!
var authorid: Int!
var authorname: String!
var articles: [JSON]? = []
func loadArticles(){
let url = "http:here.com/" + String(authorid) + "/"
println(url)
Alamofire.request(.GET, url).responseJSON { (Request, response, json, error) -> Void in
if (json != nil){
var jsonObj = JSON(json!)
if let data = jsonObj["articles"].arrayValue as [JSON]?{
self.articles = data
self.authorArticlesTableView.reloadData()
}
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.loadArticles()
println("viewDidLoad")
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
println("numberOfRowsInSection")
return self.articles?.count ?? 0
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("CustomCell") as! CustomTableViewCell
cell.articles = self.articles?[indexPath.row]
println("cellForRowAtIndexPath")
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("WebSegue", sender: indexPath)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
Une solution pour ça?
Merci,
Vous devez définir votre contrôleur de vue en tant que délégué/source de données de table:
ajouter à la fin du viewDidLoad
:
authorArticlesTableView.delegate = self
authorArticlesTableView.dataSource = self
Définissez la table delegate
et dataSource
:
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
Parfois, si vous oubliez de draper et de déposer UITableViewCell sur UITableView. XCode ne comprend pas que TableView a une cellule. Par défaut, lorsque vous drapez et déposez UITableView dans UIViewController. Je vois que UITableView a une cellule. Mais vous devez également draper et déposer UITableViewCell dans UITableView.
C'est du travail avec moi.