gpt4 book ai didi

ios - 将数据从 UITableViewCell cocoa touch 类传输到 UIViewController 类

转载 作者:行者123 更新时间:2023-11-30 12:51:05 25 4
gpt4 key购买 nike

好吧,我本质上想做的是将数据从 UITableViewCell 类传输到 UIViewController 类。下面是我的 UITableViewCell:

class OrderCell: UITableViewCell {

override func awakeFromNib() {
super.awakeFromNib()

}

var post: OrderModel!
var link: Link!

var addedList: [String:Float] = [:]


@IBOutlet weak var dishName: UILabel!
@IBOutlet weak var dishDescriptionAndPrice: UILabel!
@IBOutlet weak var numberOfOrders: UILabel!
@IBOutlet weak var addOrderBtn: UIButton!
@IBOutlet weak var subtractOderBtn: UIButton!

@IBAction func addButtonPressed(sender: AnyObject) {
if numberOfOrders.text == "9" {
numberOfOrders.text = "9"
} else {
numberOfOrders.text = String((Int(numberOfOrders.text!)! + 1))
}
addedList.updateValue(post.dishPrice, forKey: post.dishName)
print(addedList)
}

@IBAction func subtractButtonPressed(sender: AnyObject) {
if numberOfOrders.text == "0" {
numberOfOrders.text = "0"
} else {
numberOfOrders.text = String((Int(numberOfOrders.text!)! - 1))
}
}

func getOrders() -> Dictionary<String, Float> {
return addedList
}


func configureCell(post: OrderModel) {
self.post = post
self.dishName.text = post.dishName
self.dishDescriptionAndPrice.text = post.dishDescription
self.numberOfOrders.text = "0"
}

}

我想做的是让我的另一个类(UIViewController)从上面的类中检索“addedList”。我显然不能使用prepareForSegue,而且我没有找到一种与这两个类兼容的方法来做到这一点。我愿意创建一个新类作为两者之间的“桥梁”并通过它传输数据,但我再次找不到方法来做到这一点。非常感谢您的任何帮助,提前谢谢您。

更具体地说,UIViewController 保存我的 TableView ,上面的类只是每个单元格的对象文件。我需要在调用 addButtonPressed IBaction 时传输数据。

最佳答案

您可以通过在单元类中创建委托(delegate)来完成此操作。在 View Controller 类中,在 indexPath 行的单元格下添加:

cell.delegate = self

并像这样更新你的细胞类别:

 protocol ClassNameDelegate:class {
func addButtonAction(addedList:[String:Float])
}

@IBOutlet weak var dishName: UILabel!
@IBOutlet weak var dishDescriptionAndPrice: UILabel!
@IBOutlet weak var numberOfOrders: UILabel!
@IBOutlet weak var addOrderBtn: UIButton!
@IBOutlet weak var subtractOderBtn: UIButton!


//Create a delegate

weak var delegate: ClassNameDelegate?

@IBAction func addButtonPressed(sender: AnyObject) {
if numberOfOrders.text == "9" {
numberOfOrders.text = "9"
} else {
numberOfOrders.text = String((Int(numberOfOrders.text!)! + 1))
}
addedList.updateValue(post.dishPrice, forKey: post.dishName)
print(addedList)

// Call this when added list is done and get the call to your view controller.

if delegate != nil {
delegate?.addButtonAction(addedList: addedList)
}
}

@IBAction func subtractButtonPressed(sender: AnyObject) {
if numberOfOrders.text == "0" {
numberOfOrders.text = "0"
} else {
numberOfOrders.text = String((Int(numberOfOrders.text!)! - 1))
}
}

func getOrders() -> Dictionary<String, Float> {
return addedList
}


func configureCell(post: OrderModel) {
self.post = post
self.dishName.text = post.dishName
self.dishDescriptionAndPrice.text = post.dishDescription
self.numberOfOrders.text = "0"
}

}

最后在 View Controller 类中导入此委托(delegate)方法,就像导入 tableView 委托(delegate)和数据源一样。

关于ios - 将数据从 UITableViewCell cocoa touch 类传输到 UIViewController 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40962004/

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