表视图单元未在表视图控制器中显示

时间:2018-04-12 19:31:32

标签: ios swift uitableview

我是swift的新手,我试图让我的单元格显示在tableView中。我在这里搜索了一些问题但没人能提供帮助。表加载正常,我没有得到关于tableView的错误。我有什么遗失的吗?

- 我已经仔细检查了重用标识符,它们是相同的

- 我删除并准备了出口

这是我的UITableViewController类:

class DrawerViewController: UITableViewController{

    @IBOutlet weak var drawerTable: UITableView!

    var currentCell = [DrawerModel]()

    override func viewDidLoad() {
        super.viewDidLoad()

        addGradientToView(view: drawerTable)

        let temp2Model = DrawerModel()

        temp2Model.item = "Profile"
        temp2Model.icon = "loginbackground2.jpg"

        currentCell.append(temp2Model)

        drawerTable.delegate = self
        drawerTable.dataSource = self
        //self.drawerTable.separatorStyle = UITableViewCellSeparatorStyle.none
        //self.drawerTable.reloadData()

    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = drawerTable.dequeueReusableCell(withIdentifier: "drawerCell", for: indexPath) as! DrawerTableViewCell

        let tempModel: DrawerModel

        tempModel = currentCell[indexPath.row]

        cell.thisLabel.text = tempModel.item

        print("test1" + tempModel.item! as Any)

        let currentImage = UIImage(named: "loginbackground2.jpg")
        cell.thisImage = UIImageView(image: currentImage)

        return cell
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1;
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        print("it ran")

        return currentCell.count
    }

    func addGradientToView(view: UITableView)
    {
        //gradient layer
        let gradientLayer = CAGradientLayer()

        //define colors
        gradientLayer.colors = [UIColor.init(rgb: 0x4b0082).cgColor, UIColor.init(rgb: 0xfa8072).cgColor]

        //define locations of colors as NSNumbers in range from 0.0 to 1.0
        //if locations not provided the colors will spread evenly
        gradientLayer.locations = [0.0, 0.8]

        //define frame
        gradientLayer.frame = view.bounds

        //insert the gradient layer to the view layer
        view.layer.insertSublayer(gradientLayer, at: 0)
    }

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

}

这是我的UITableViewCell类:

class DrawerTableViewCell: UITableViewCell {

    @IBOutlet weak var thisImage: UIImageView!
    @IBOutlet weak var thisLabel: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
}

1 个答案:

答案 0 :(得分:-1)

如果您使用UITableViewController(在您的情况下为DrawerViewController),则已嵌入tableView属性,其中delegatedataSource设置为控制器。

所以在你的情况下,下一行是多余的

drawerTable.delegate = self
drawerTable.dataSource = self

要修复tableView.reload()

之后的致电currentCell.append(temp2Model)