2014-11-04 93 views
1

在XCode 6.1中运行代码时,ViewController中没有任何东西出现。tableView不出现在ViewController中(swift)

import UIKit 

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    var tableView: UITableView! 
    var messages: [String] = [String]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     tableView = UITableView() 
     tableView.dataSource = self 
     tableView.delegate = self 
     self.view.addSubview(self.tableView) 

     //http://stackoverflow.com/questions/25413239/custom-uitablecellview-programmatically-using-swift 
     //Auto-set the UITableViewCells height (requires iOS8) 
     tableView.rowHeight = UITableViewAutomaticDimension 
     tableView.estimatedRowHeight = 44 

     // add something to messages 
     messages.append("foo") 
     messages.append("bar") 
    } 

    // TABLEVIEWS 
    //func numberOfSectionsInTableView(tableView: UITableView!) -> Int { 
    // return 1 
    //} 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     var count = messages.count ?? 0 
     NSLog("message count: \(count)") 
     return count 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     //var cell = tableView.dequeueReusableCellWithIdentifier("MyCell") as MyCell 
     var cell = UITableViewCell() 
     NSLog("row[\(indexPath.row)]: \(messages[indexPath.row])") 
     cell.textLabel.text = messages[indexPath.row] 
     return cell 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

回答

4

试试这个代码:

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView = UITableView() 
    tableView.dataSource = self 
    tableView.delegate = self 
    self.view.addSubview(self.tableView) 

    //Auto-set the UITableViewCells height (requires iOS8) 
    tableView.rowHeight = UITableViewAutomaticDimension 
    tableView.estimatedRowHeight = 44 
    tableView.frame = CGRectMake(0, 0, 320, 568) 

    // add something to messages 
    messages.append("foo") 
    messages.append("bar") 
} 

编辑:尝试此屏幕的尺寸都:

tableView.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height) 
+0

这不适用于多种屏幕尺寸。 – AG1 2014-11-04 08:27:55

+0

我已经更新了答案。 – 2014-11-04 08:34:05

0

嗯,为什么要这么辛苦为你的自我。在故事板中,您可以添加一个TableViewController到项目中,或者添加一个tableview给你的viewcontroller,它可以直接使用。控制器类应该从UITableViewController继承。

+0

故事板隐藏你太多。我喜欢能够以编程方式控制我的视图层次结构。 – AG1 2014-11-11 03:03:52

+0

究竟是什么隐藏你需要在应用程序? – user1700737 2014-11-11 21:23:18

相关问题