- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当按下页脚单元格中的按钮时,我已经成功地将 ItemsVC 的标签数据传递给 Fees VC
但当我试图将 TableView 中该部分的标签传递给 FeesVC 时,我似乎无法让它工作
我试图将小计从 ItemsVC 页脚传递到不同部分的 FeesViewController 标签,而不是只传递一个部分的数据
我已成功从页脚传递数据(按下按钮时)。它已经成功地将 totalPriceLbl 从 BrandFooter 传递到 Fees VC,但不能将数据从正确的部分传递到 FeesVC 如果这有任何意义的话,我如何才能将正确的标签数据传递给费用按下按钮
我觉得我真的很接近我的解决方案,我就在某处
我认为问题出在 viewForFooterInSection 中,它将小计(值)从该部分传递给 FeesVC
在此先感谢您提供的任何帮助
class ItemsViewController: UIViewController {
var brandItems: [BrandItem] = []
var groupedBrandItems: [String: [BrandItem]] = [:]
var brandSectionTitle: [String] = []
var selectedLabel: String? // Populates label data in FeesVC
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
groupedBrandItems = Dictionary(grouping: brandItems, by: {$0.products.brandName})
brandSectionTitle = groupedBrandItems.map{$0.key}.sorted()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
}if let vc = segue.destination as? FeesViewController {
vc.stringPassed = selectedLabel! // Populates label data in FeesVC
}
}
}
extension ItemsViewController: UITableViewDelegate, UITableViewDataSource{
func numberOfSections(in tableView: UITableView) -> Int {
return brandSectionTitle.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let brand = brandSectionTitle[section]
return groupedBrandItems[brand]!.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let brandCell = tableView.dequeueReusableCell(withIdentifier: "BrandCell") as! BrandCell
let brand = brandSectionTitle[indexPath.section]
let brandItemsToDisplay = groupedBrandItems[brand]![indexPath.row]
brandCell.configure(withCartItems: brandItemsToDisplay.products)
return brandCell
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let brandHeader = tableView.dequeueReusableCell(withIdentifier: "BrandHeader") as! BrandHeader
let headerTitle = brandSectionTitle[section]
brandHeader.brandName.text = "Brand: \(headerTitle)"
return brandHeader
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let brandFooter = tableView.dequeueReusableCell(withIdentifier: "BrandFooter") as! BrandFooter
let brand = brandSectionTitle[section]
let arrAllItems = groupedCartItems[brand]!
var subtotal: Float = 0
for item in arrAllItems {
if item.products.selectedOption == 1 {
subtotal = subtotal + (Float(item.products.price) * Float(item.products.count))
}
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
let total = numberFormatter.string(from: NSNumber(value: Float(subtotal)))
brandFooter.totalPrice.text = String(Total!)
//trying to pass each section subtotal to FeesVC
self.selectedLabel = "\(subtotal)" // passes code to FeesVC
return brandFooter
}
}
class FeesViewController: UIViewController {
@IBOutlet weak var feesView: UIView!
@IBOutlet weak var subtotalLbl: UILabel!
@IBOutlet weak var salesTaxLbl: UILabel!
@IBOutlet weak var totalLbl: UILabel!
var stringPassed = String() // Populates label data in FeesVC
override func viewDidLoad() {
super.viewDidLoad()
let tax = Float(stringPassed)! * Float(0.0825)
let total = Float(stringPassed)! + tax
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
let subTotal = numberFormatter.string(from: NSNumber(value: Float(stringPassed)!))
let salesTax = numberFormatter.string(from: NSNumber(value: Float(tax)))
let overallTotal = numberFormatter.string(from: NSNumber(value: Float(total)))
subtotalLbl.text = subTotal
salesTaxLbl.text = "(\(String(describing: salesTax!)))"
totalLbl.text = "(\(String(describing: overallTotal!)))"
}
@IBAction func returnButton(_ sender: Any) {
dismiss(animated: true, completion: nil)
print("Close Taxes and Fees")
}
}
更新:
每当按下更多信息按钮时,当我尝试发布每个部分的小计时,我在 FeesVC 中一直得到相同的小计和计算
self.selectedLabel = "\(小计)"
当为一个部分按下按钮时,viewForFooterInSection 中的这行代码成功地传递了小计,但是当在相应的页脚中按下按钮时,它并没有传递每个部分的小计
最佳答案
首先声明一个 double 组来存储您的每一个小计。
var subTotalArray[Double] = [Double]()
然后,当您在 viewForFooterInSection 函数中计算小计时,像这样初始化您创建的数组(根据您的代码和变量名称更改):
subTotalArray[section] = subtotal
// use the local variable "section" to iterate
// and assign the subtotal to the correct section footer
Next 要确定按下哪个信息按钮以获得正确的小计数据,您可以在 viewForFooterInSection 函数中配置 moreInfo 按钮的标签属性。像这样分配标签:
moreInfo.tag = section
最后有了所有这些变量,我们可以使用连接到您的更多信息按钮的处理函数正确分配、确定和收集每个单独的小计。
func handleMoreInfo(sender: UIButton) {
selectedLabel = subTotalArray[sender.tag]
}
关于ios - 如何在页脚中使用 segue 将标签数据传递到不同的部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59367436/
我是一名优秀的程序员,十分优秀!