如何在 TableViewCell.swift 文件中配置包含图像的按钮,并实现在每个 table 视图单元格中显示不同的图像?
How to configure a button containing an image in TableViewCell.swift file, and implement showing different images in each table view cell?
我正在尝试将一个按钮显示为餐厅运行t 食物的图像,并将其下方的按钮显示为包含该餐厅名称的文本标签运行t 所有这些都在自定义 table查看单元格。因此,当您向下滚动 table 视图时,您会看到不同餐厅运行t 食物的图片以及图片下方的餐厅名称运行t。我有一个正在使用的 XIB 文件。
目前,我正在使用 UIImage
来制作餐厅的图片 运行ts,这很有效,但我正在尝试使用带有图片的按钮,这样我就可以在点击按钮的食物图片后制作一个@IBAction
。
我在 TableViewCell.swift
文件中配置了一个显示餐厅名称的按钮,如下所示(标签在 运行 时显示):
TableViewCell.swift
代码:
@IBOutlet var labelButton: UIButton!
//For retaining title in a property for IBAction use.
private var title: String = ""
func configureLabelButton(with title: String) {
self.title = title //For retaining title in a property for IBAction use.
labelButton.setTitle(title, for: .normal)
}
并实现了在每个 table 视图单元格中显示不同的 restau运行t 名称,其中 restau运行t 名称在视图控制器中作为字符串显示在数组中,如下所示。
ViewController.swift
代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "RestaurantTableViewCell", for: indexPath) as! RestaurantTableViewCell
cell.configureLabelButton(with: myData[indexPath.row])
return cell
}
我正在尝试做同样的事情来在按钮中显示图像。我有一组用于相同目的的图像,称为 myImages
。这是我目前的代码,但是当 运行.
时它不起作用
TableViewCell.swift
代码:
@IBOutlet var imageButton: UIButton!
//For retaining image in a property for IBAction use.
private var image: UIImage = UIImage()
func configureImageButton(with image: UIImage) {
self.image = image //For retaining image in a property for IBAction use.
imageButton.setImage(image, for: .normal)
}
ViewController.swift
代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "RestaurantTableViewCell", for: indexPath) as! RestaurantTableViewCell
cell.configureImageButton(with: myImages[indexPath.row]!)
cell.imageButton.contentMode = .scaleAspectFill
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 185
}
我认为我的错误在 TableViewCell.swift
的某处。我想我没有正确的代码,可能在 ViewController.swift
.
我认为 UIImage 数组声明有问题,问题可能是它没有从数组中获取图像。
试试这个
var arrImg : [UIImage] = [UIImage(named: "res-1")!,UIImage(named: "res-2")!,UIImage(named: "res-3")!]
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "RestaurantTableViewCell", for: indexPath) as! RestaurantTableViewCell
cell.configureImageButton(with: arrImg[indexPath.row])
cell.btnResturant.contentMode = .scaleAspectFill
cell.configureLabel(with: arrRes[indexPath.row])
cell.layoutIfNeeded()
cell.selectionStyle = .none
cell.layoutIfNeeded()
return cell
}
找到了我的问题的答案。 TableView.swift 中的语法错误。这可能是由于 Swift 更新。
是:
imageButton.setImage(image, for: .normal)
应该是:
imageButton.setBackgroundImage(image, for: .normal)
我正在尝试将一个按钮显示为餐厅运行t 食物的图像,并将其下方的按钮显示为包含该餐厅名称的文本标签运行t 所有这些都在自定义 table查看单元格。因此,当您向下滚动 table 视图时,您会看到不同餐厅运行t 食物的图片以及图片下方的餐厅名称运行t。我有一个正在使用的 XIB 文件。
目前,我正在使用 UIImage
来制作餐厅的图片 运行ts,这很有效,但我正在尝试使用带有图片的按钮,这样我就可以在点击按钮的食物图片后制作一个@IBAction
。
我在 TableViewCell.swift
文件中配置了一个显示餐厅名称的按钮,如下所示(标签在 运行 时显示):
TableViewCell.swift
代码:
@IBOutlet var labelButton: UIButton!
//For retaining title in a property for IBAction use.
private var title: String = ""
func configureLabelButton(with title: String) {
self.title = title //For retaining title in a property for IBAction use.
labelButton.setTitle(title, for: .normal)
}
并实现了在每个 table 视图单元格中显示不同的 restau运行t 名称,其中 restau运行t 名称在视图控制器中作为字符串显示在数组中,如下所示。
ViewController.swift
代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "RestaurantTableViewCell", for: indexPath) as! RestaurantTableViewCell
cell.configureLabelButton(with: myData[indexPath.row])
return cell
}
我正在尝试做同样的事情来在按钮中显示图像。我有一组用于相同目的的图像,称为 myImages
。这是我目前的代码,但是当 运行.
TableViewCell.swift
代码:
@IBOutlet var imageButton: UIButton!
//For retaining image in a property for IBAction use.
private var image: UIImage = UIImage()
func configureImageButton(with image: UIImage) {
self.image = image //For retaining image in a property for IBAction use.
imageButton.setImage(image, for: .normal)
}
ViewController.swift
代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "RestaurantTableViewCell", for: indexPath) as! RestaurantTableViewCell
cell.configureImageButton(with: myImages[indexPath.row]!)
cell.imageButton.contentMode = .scaleAspectFill
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 185
}
我认为我的错误在 TableViewCell.swift
的某处。我想我没有正确的代码,可能在 ViewController.swift
.
我认为 UIImage 数组声明有问题,问题可能是它没有从数组中获取图像。
试试这个
var arrImg : [UIImage] = [UIImage(named: "res-1")!,UIImage(named: "res-2")!,UIImage(named: "res-3")!]
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "RestaurantTableViewCell", for: indexPath) as! RestaurantTableViewCell
cell.configureImageButton(with: arrImg[indexPath.row])
cell.btnResturant.contentMode = .scaleAspectFill
cell.configureLabel(with: arrRes[indexPath.row])
cell.layoutIfNeeded()
cell.selectionStyle = .none
cell.layoutIfNeeded()
return cell
}
找到了我的问题的答案。 TableView.swift 中的语法错误。这可能是由于 Swift 更新。
是:
imageButton.setImage(image, for: .normal)
应该是:
imageButton.setBackgroundImage(image, for: .normal)