如何从表格视图单元格中获取值

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 访问值

点击保存按钮并存储在字典中时获取表格视图单元格中的文本字段?

如何从资产中获取不同的图像并将其分配给不同表格视图单元格中的图像视图

如何使用 EPPLUS 从 Excel 电子表格单元格中获取值?

如何从具有多个数组的字典中获取特定键并存储到放置在表格视图单元格中的字符串中