如何从表格视图单元格中获取值
Posted
技术标签:
【中文标题】如何从表格视图单元格中获取值【英文标题】:How to get value from table view cell 【发布时间】:2020-05-12 08:07:56 【问题描述】:我需要从表格视图单元格中获取价格 我需要找另一个VC 每次用户选择行时我都需要转移价格 问题是我不知道如何正确地从 tableView 获取值 MenueViewController:
import UIKit
class MenueViewController: UIViewController
@IBOutlet weak var tableView: UITableView!
var dishes: [Dish] = []
var totalSum = 0
override func viewDidLoad()
super.viewDidLoad()
dishes = createArray()
tableView.delegate = self
tableView.dataSource = self
tableView.backgroundColor = .white
navigationItem.title = "Меню"
func createArray() -> [Dish]
var tempDishes: [Dish] = []
let dish1 = Dish(image: UIImage.init(named: "plovKebab")!, title: "Плов Кебаб", price: 169, type: "Основные Блюда")
let dish2 = Dish(image: UIImage.init(named: "plovKebabShafran")!, title: "Плов Кебаб Шафран", price: 169, type: "Основные Блюда")
tempDishes.append(dish1)
tempDishes.append(dish2)
return tempDishes
extension MenueViewController: UITableViewDataSource, UITableViewDelegate
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return dishes.count
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let dish = dishes[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "MenueCell") as! MenueCell
cell.setDish(dish: dish)
return cell
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
let dish = dishes[indexPath.row]
totalSum += dish.price //the place where I tried to take price
print(totalSum)
我们需要接受这个价格的VC:
import UIKit
class OrderViewController: UIViewController
@IBOutlet weak var totalPriceLabel: UILabel!
var totalPrice: MenueViewController?
var sum:Int?
override func viewDidLoad()
super.viewDidLoad()
if let price = sum
totalPriceLabel.text = String(totalPrice?.totalSum)
sum的值为0 如何获得价值?
【问题讨论】:
不应该从数据源获取价格,改为var dishes: [Dish]
吗?
嗨,Fillsondy,你是如何转到其他 VC 的?从 MenuViewController 到 OrderViewController?
我需要将totalSum的值带到我的OrderVC中,例如用户在单元格处点击2次并将VC更改为OrderVC,它需要显示2个单元格值的totalSum
嗨 MacUserT,我使用 Present Modally segue。所以用户按下按钮并更改 VC
因此,当用户点击卖出时,您会从您的盘子数组中获取相应的 Dish 对象并使用它来获取价格/总和。我的观点是,你应该使用数据源而不是 UI 组件来获得正确的值,因为你的模型 Dish
保存了数据..
【参考方案1】:
请注意,didSelectRowAtIndexpath
不会在您的 performSegue
之前被调用。在link,您可以找到详细说明,包括有关您的问题以及如何解决问题的示例代码。
此外,下面列出了多种方法来解决您的问题。
使用willSelectIndexpath
并捕获索引路径以在performSegue
方法中传递它
使用didSelectIndexpath
并在里面执行segue
仅使用 didSelectIndexpath
并在其中执行导航逻辑而不使用 segues
【讨论】:
以上是关于如何从表格视图单元格中获取值的主要内容,如果未能解决你的问题,请参考以下文章
iOS:如何从 tableview 的自定义单元格中的 UITextField 访问值
点击保存按钮并存储在字典中时获取表格视图单元格中的文本字段?
如何从资产中获取不同的图像并将其分配给不同表格视图单元格中的图像视图