gpt4 book ai didi

ios - 单击按钮将项目添加到另一个 View Controller TableView

转载 作者:行者123 更新时间:2023-11-29 05:38:14 26 4
gpt4 key购买 nike

我有一个名为 ListViewController 的 View Controller 和另一个名为 AddFoodViewController 的 View Controller 。在 ListViewController 中,用户可以将自己的成分添加到以表格 View 显示的杂货 list 中。当他们转到 AddFoodViewController 时,用户应该能够单击一个显示“添加到列表”的按钮,该按钮会将成分数组(已在 TableView 中呈现)添加到杂货列表中。我对此很陌生,所以我想知道是否有人可以提供帮助?我已经成功地使 ListViewController 正常工作,但是我不确定如何将 AddFoodViewController 中的成分数组添加到之前的 ListViewController 中。

class AddFoodViewController: UIViewController, UITableViewDataSource, UITableViewDelegate{


@IBOutlet weak var FoodTableView: UITableView!
@IBOutlet weak var sendFoodBtn: UIButton!

//array of food
let array = ["1 Salad", "3oz Chicken", "2 Tomatoes", "2 Cucumbers"]
let category = ""

override func viewDidLoad() {
super.viewDidLoad()
}


//display array in table view
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return(array.count)
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let foodCell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: "foodCell")
foodCell.textLabel?.text = array[indexPath.row]
foodCell.backgroundColor = .clear
foodCell.textLabel?.textColor = .darkGray
foodCell.textLabel?.font = UIFont(name: (foodCell.textLabel?.font.fontName)!, size:17)
return foodCell

}


//button that is supposed to add all ingredients to the ListViewController
@IBAction func addOnClick(_ sender: Any) {


}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if(segue.identifier == "toList"){
let vc = (segue.destination as! ListViewController)
vc.category = array
}
}
}

最佳答案

向之前的 View Controller 传递数据可以通过委托(delegate)模式来实现,首先,在 AddFoodViewController 中声明一个协议(protocol),并在 View Controller 中定义一个委托(delegate)属性。

// AddFoodViewController.swift
protocol AddFoodViewControllerDelegate {
func addIngredient(array: [String])
}

class AddFoodViewController: UIViewController {
...
var delegate: AddFoodViewControllerDelegate?

// MARK: add function
func actionAdd() {
delegate?addIngredient(array)
}
...
}

返回您的ListViewController,找到segue目标 View Controller ,即您的AddFoodViewController(记住在 Storyboard中分配其类名),并将委托(delegate)分配给self。

// ListViewController.swift
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
...
let vc = segue.destination as? AddFoodViewController
vc?.delegate = self
...
}

// in the same file, implement delegate method here
extension ListViewController: AddFoodViewControllerDelegate {
func addIngredient(array: [String]) {
items += array
// do table reload or something
}
}

关于ios - 单击按钮将项目添加到另一个 View Controller TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56816638/

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