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。