ios - 打印 tableview 的计数时出现问题
问题描述
我想在 OrderNumberLabel 中打印出添加到我的表视图中的行数,例如,如果有人向表视图中添加了 4 个项目,我希望它计算并打印出 OrderNumberLabel 中的数字 4。这可能吗?我尝试了几种方法,但没有什么对我有用,任何帮助将不胜感激!
import UIKit
import SafariServices
class ViewController: UIViewController, UIAdaptivePresentationControllerDelegate, UITextFieldDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var OrderNumberLabel: RoundedLabel2!
@IBOutlet weak var CostLabel: RoundedLabel2!
@IBOutlet weak var ProfitsLabel: RoundedLabel2!
@IBOutlet weak var itemTextField: UITextField!
@IBOutlet weak var pricesTextField: UITextField!
@IBOutlet weak var salepriceTextField: UITextField!
var items: [ItemRow] = []
struct ItemRow: Codable {
var item: String
var price: Double
var salePrice: Double
private enum CodingKeys : String, CodingKey {case item, price, salePrice}
var profit : Double {
return salePrice - price
}
var cost : Double {
return price
}
}
override func viewDidLoad() {
super.viewDidLoad()
load()
updateProfitLabel()
updateCostLabel()
}
override var prefersStatusBarHidden: Bool {
return true
}
func save(){
if let data = try? PropertyListEncoder().encode(items) {
UserDefaults.standard.set(data, forKey: "Saved")
}
}
func load(){
let defaults = UserDefaults.standard
if let data = defaults.data(forKey: "Saved") {
items = try! PropertyListDecoder().decode([ItemRow].self, from: data)
}
}
@IBAction func addButtonTapped(_ sender: Any) {
insertNewItems()
save()
}
func insertNewItems() {
let price = Double(pricesTextField.text!) ?? 0.0
let salePrice = Double(salepriceTextField.text!) ?? 0.0
let newVideoRow = ItemRow(item: itemTextField.text!, price: price, salePrice: salePrice)
items.append(newVideoRow)
let indexPath = IndexPath(row: items.count - 1, section: 0)
tableView.insertRows(at: [indexPath], with: .automatic)
updateProfitLabel()
updateCostLabel()
itemTextField.text = ""
pricesTextField.text = ""
salepriceTextField.text = ""
view.endEditing(true)
}
func updateProfitLabel() {
let profitTotal = items.map{$0.profit}.reduce(0.0, +)
ProfitsLabel.text = String(format: "%.2f", profitTotal)
}
func updateCostLabel() {
let costTotal = items.map{$0.cost}.reduce(0.0, +)
CostLabel.text = String(format: "%.2f", costTotal)
}
}
extension ViewController: UITableViewDelegate{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let ItemTitle = items[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell") as! ItemCell
cell.itemLabel.text = ItemTitle.item
cell.priceLabel.text = String(format: "%.2f", ItemTitle.price)
cell.saleLabel.text = String(format: "%.2f", ItemTitle.salePrice)
tableView.separatorColor = UIColor(red:0, green:0, blue:0, alpha:1.0)
cell.contentView.backgroundColor = UIColor(red:0.13, green:0.13, blue:0.13, alpha:1.0)
return cell
}
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
items.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .automatic)
save()
}
}
}
解决方案
尝试:
orderNumberLabel.text = String(items.count)
推荐阅读
- flutter - 如何用直线制作曲线
- pine-script - Pine-script:在 15 分钟图表上绘制 4 小时图表
- c++ - 使用 CMake 构建 .so 库时提升未定义符号
- c - 为什么启用优化时这个使用全局标志变量的计时器不起作用?
- php - $_REQUEST 中的第一个键格式错误
- java - 有没有办法在功能性弹簧云流活页夹上过滤消息头?
- python - Pandas - 根据另一行更新一行中的值
- python-3.x - Python 3 通过 Raspberry Pi 上的 UDP 与子进程交互
- java - Spring 集成 DSL 关闭策略
- javascript - 为什么某些操作不适用于具有两个 CSS 类的元素?