在Swift Empty中以编程方式运行UITableView

时间:2015-08-21 01:14:08

标签: ios swift uitableview

我以编程方式在swift中创建UITableView。使用以下代码(我有UITableViewDelegateUITableViewDataSource):

var tableView = UITableView()
override func viewDidLoad() {
    super.viewDidLoad()

    tableView.frame = CGRectMake(25, 180, 220, 150)
    tableView.delegate = self
    tableView.delegate = self
    tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
    self.view.addSubview(tableView)
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return options.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
    cell.textLabel?.text = options[indexPath.row]

    println("cell label is")
    println(cell.textLabel!.text)

    return cell
}

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return 30
}

然而,该表格空白。细胞不会出现。有什么建议吗?

4 个答案:

答案 0 :(得分:1)

为什么tableView.delegate在viewDidLoad中初始化了两次?其中一个必须是datasource isn&#39t?

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.frame = CGRectMake(25, 180, 220, 150)
    tableView.delegate = self
    tableView.datasource = self
    tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
    self.view.addSubview(tableView)
}

答案 1 :(得分:0)

tableView.reloadData()添加到self.view中的viewDidLoad后调用{/ 1}}。

答案 2 :(得分:0)

不仅缺少 self.tableView.reloadData()。您在数据结构选项中有什么内容从哪里获取数据?

你说你是从解析中查询:

 var query = PFQuery(className: "whatever class name")
    query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in
        if error == nil {

            if let newObjects = objects as? [PFObject]{

                for one in newObjects {


                    var message = one["TextMessage"] as! String
                    // so add this data message data into your array 
                    // then reload Data
                }

            }

        }
        else{
           print("error")
        }
    }
}

更改此

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
  }

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return options.count 
 }

答案 3 :(得分:0)

我注意到你(非常规地)使用options中的每个元素作为我在其自己的部分中的行。但是,当您设置标签时,您将其基于行号,该行号始终为零。你想要的是: cell.textLabel?.text = options[indexPath.section]

至于表是空白的,我认为要么

  1. 你的第一个元素是什么
  2. 数组为空
  3. 您没有正确设置部分