2015-06-01 16 views
14

Ich habe eine Tabellenansicht in einem UIViewController eingefügt. Aber mein Code funktioniert nicht. Bei der Überprüfung habe ich festgestellt, dass keine der Tabellenansichtsfunktionen aufgerufen wird.Swift - UITableView innerhalb UIViewController, UITableView Funktionen werden nicht

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) 
     } 

Irgendeine Lösung für dieses?

Danke,

+1

Haben Sie den Delegaten und die Datenquelle festgelegt? – Asaf

Antwort

39

Sie haben Ihren View-Controller als Tabellenansicht Delegierten/Datenquelle einzustellen:

bis zum Ende der viewDidLoad hinzu:

authorArticlesTableView.delegate = self 
authorArticlesTableView.dataSource = self 
13

Set Tisch delegate und dataSource:

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 
} 
0

Manchmal, wenn yo Sie vergessen, UITableViewCell zu UITableView zu drapieren und zu löschen. XCode versteht nicht, dass TableView über Cell verfügt. Standardmäßig, wenn Sie UITableView in UIViewController drapieren und ablegen. Ich sehe UITableView hat Zelle. Aber Sie müssen auch UITableViewCell in UITableView drapieren und ablegen.

Es ist Arbeit mit mir.

Verwandte Themen