iOS Swift:当我滚动它时,Tableview数据消失了

时间:2014-08-06 09:46:59

标签: ios uitableview swift

我已经启动了Swift编程,并且很少对tableview Control感到困惑。为了实现,我编写了以下代码,但滚动时数据会消失。

import UIKit

class ViewController: UIViewController {

    @IBOutlet  var tblView: UITableView

    var Array = ["1","2","3","4","5"]

    override func viewDidLoad() {
        super.viewDidLoad()

        tblView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {

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


    @IBAction func moveToNextView(sender: AnyObject) {

        var objNextViewController : NextViewController = NextViewController(nibName: "NextViewController", bundle: nil)
        self.navigationController.pushViewController(objNextViewController, animated: true)

    }

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

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {

        //var cell : UITableViewCell! = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")

        var cell:UITableViewCell = tblView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
        var lblPrint : UILabel! = UILabel(frame: CGRectMake(10, 10, 100, 100))
        lblPrint.text = Array[indexPath.row]
        cell.contentView.addSubview(lblPrint)

        return cell
    }

}

为上述代码编写什么是正确的方法?

由于

2 个答案:

答案 0 :(得分:2)

问题是每次出现单元格时都要添加var lblPrint : UILabel!

您可以使用UITableViewCell.textLabel,而不是添加自定义标签字段。

例如:

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {

    //var cell : UITableViewCell! = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")

    var cell:UITableViewCell = tblView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
    cell.textLabel = Array[indexPath.row]
    return cell
}

您也可以尝试使用自定义标签创建自定义单元格,或者应该检查单元格lblPrint中是否已存在contentView

答案 1 :(得分:0)

对我来说,通过覆盖以下方法解决了这个问题。我刚从方法中返回UITableViewAutomaticDimension

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

并在TableViewController类中为表视图设置以下属性。

tableView.estimatedRowHeight = 140