gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 05:01:28 25 4
gpt4 key购买 nike

我有一个带有几个 IBOutlet 的自定义单元类。我已将类(class)添加到 Storyboard 中。我已经连接了我所有的网点。我的 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(),它包含所有正确的字符串。我也试过把一个实际的字符串等于标签,并产生相同的结果。

我错过了什么?感谢您的帮助。

最佳答案

自定义表格 View 单元示例

使用 Xcode 9(编辑也在 11/12 Beta 2 上测试)和 Swift 4(编辑:也在 5.2 上测试)测试

原问题的提问者已经解决了他们的问题。我将这个答案添加为一个小型独立示例项目,供其他尝试做同样事情的人使用。

完成的项目应该是这样的:

enter image description here

创建一个新项目

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

添加代码

向您的项目添加一个新的 Swift 文件。将其命名为 MyCustomCell.swift。此类将保存您添加到 Storyboard 中的单元格的 View 的导出。

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).")
}
}

设置 Storyboard

将 TableView 添加到 View Controller 并使用自动布局将其固定到 View Controller 的四个边。然后将一个 Table View Cell 拖到 Table View 上。然后将一个 View 和一个标签拖到原型(prototype)单元格上。 (您可能需要在尺寸检查器中选择表格 View 单元格和 manually set the Row Height 到更高的位置,以便您有更多的工作空间。)使用自动布局来修复 View 和标签,以您希望它们在内容中的排列方式表格 View 单元格的 View 。例如,我将 View 设置为 100x100。

enter image description here

其他IB设置

自定义类名和标识符

选择 Table View Cell 并将自定义类设置为 MyCustomCell(我们添加的 Swift 文件中类的名称)。还将标识符设置为 cell(我们在上面的代码中用于 cellReuseIdentifier 的相同字符串。

enter image description here

连接 socket

  • 控制从 Storyboard中的 TableView 拖动到 ViewController 代码中的 tableView 变量。
  • MyCustomCell 类中的 myViewmyCellLabel 变量,对 Prototype 单元格中的 View 和标签执行相同的操作。<

完成

就是这样。您现在应该能够运行您的项目。

注意事项

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

关于swift - 在 swift 中创建自定义 tableview 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24170922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com