在swift中创建自定义tableview单元格

前端之家收集整理的这篇文章主要介绍了在swift中创建自定义tableview单元格前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个自定义单元格类与几个IBOutlets。我已经添加了类到故事板。我连接了我所有的网点。我的cellForRowAtIndexPath函数看起来像这样:
override func tableView(tableView: UITableView!,cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell",forIndexPath: indexPath) as SwipeableCell

        cell.mainTextLabel.text = self.venueService.mainCategoriesArray()[indexPath.row]

        return cell
    }

这是我的自定义单元格类:

class SwipeableCell: UITableViewCell {
    @IBOutlet var option1: UIButton
    @IBOutlet var option2: UIButton
    @IBOutlet var topLayerView : UIView
    @IBOutlet var mainTextLabel : UILabel
    @IBOutlet var categoryIcon : UIImageView

    init(style: UITableViewCellStyle,reuseIdentifier: String!) {
        super.init(style: style,reuseIdentifier: reuseIdentifier)


    }
}

当我运行应用程序,我的所有单元格都是空的。我已经注销了self.venueService.mainCategoriesArray(),它包含所有正确的字符串。我也试过把一个实际的字符串等于标签,并产生相同的结果。

我缺少什么?任何帮助是赞赏。

自定义表视图单元格示例

更新为Swift 3

原来问题的提问者已经解决了他们的问题。我将这个答案作为一个迷你自我包含的示例项目,为那些试图做同样的事情的人们添加

完成的项目应该如下所示:

创建一个新的项目

它可以只是一个单一视图应用程序。

添加代码

向项目中添加一个新的Swift文件。将其命名为MyCustomCell.swift。这个课程将保存您在故事板中添加到单元格的视图的插座。

import UIKit
class MyCustomCell: UITableViewCell {
    @IBOutlet weak var myView: UIView!
    @IBOutlet weak var myCellLabel: UILabel!
}

我们将在以后连接这些插座。

打开ViewController.swift并确保您有以下内容

import UIKit
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

    // These strings will be the data for the table view cells
    let animals: [String] = ["Horse","Cow","Camel","Sheep","Goat"]

    // These are the colors of the square views in our table view cells.
    // In a real project you might use UIImages.
    let colors = [UIColor.blue,UIColor.yellow,UIColor.magenta,UIColor.red,UIColor.brown]

    // Don't forget to enter this in IB also
    let cellReuseIdentifier = "cell"

    @IBOutlet var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self
    }

    // number of rows in table view
    func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
        return self.animals.count
    }

    // create a cell for each table view row
    func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell:MyCustomCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! MyCustomCell

        cell.myView.backgroundColor = self.colors[indexPath.row]
        cell.myCellLabel.text = self.animals[indexPath.row]

        return cell
    }

    // method to run when table view cell is tapped
    func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
        print("You tapped cell number \(indexPath.row).")
    }
}

设置故事板

将视图添加到视图控制器,并使用自动布局将其固定在View Controller的四面。然后将表视图单元格拖动到表视图上。然后将一个视图和一个标签拖到原型单元格。 (你可能需要拉下原型单元格的底部,以便它有点大。)使用自动布局来修复视图和标签如何在表视图单元格的内容视图中排列。例如,我将我的视图设为100×100。

其他IB设置

自定义类名和标识符

选择表视图单元格,并将自定义类设置为MyCustomCell(在我们添加的Swift文件中的类的名称)。还要将标识符设置为cell(与上面代码中的cellReuseIdentifier使用的字符串相同)。

挂接插座

>控制从故事板中的表视图拖动到ViewController代码中的tableView变量。
>对Prototype单元格中的视图和标签执行与MyCustomCell类中的myView和myCellLabel变量相同的操作。

完成

而已。您现在应该可以运行您的项目。

笔记

>我在这里使用的彩色视图可以用任何东西替代。一个明显的例子是UIImageView。
>如果你只是想让一个TableView工作,请参阅this even more basic example
>如果需要具有可变单元格高度的表视图,请参阅this example

猜你在找的Swift相关文章