微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 uistepper 乘以来自 segue 数据传输的值

如何解决如何使用 uistepper 乘以来自 segue 数据传输的值

所以我遇到了 this question that relates to mine,我想知道如何使用 segue 数据传输中的值来做到这一点。我希望能够将我的数据传输值用作原始值,并且仅在步进值更改时才更改该值。

例如,当步进值增加时,我的原始值是 5,10、15、20、25 ......等等,当它减少时也是如此。我该怎么做?

这是我的数据传输功能

override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
    if segue.identifier == Constants.Segues.fromEventDetailsToTicketForm {
        guard let user = Auth.auth().currentUser else { return }
        let vc = segue.destination as! TicketFormViewController
        
        vc.ticketHolderName = user.displayName
        vc.costOfEvent = selectedEventCost
        vc.dateOfEvent = selectedEventDate
        vc.navigationItem.title = selectedEventName
    }
}

这是我的目标 vc 中的全局变量

 @IBOutlet weak var nameOfTicketHolderLabel: UILabel!
@IBOutlet weak var nameOTicketHolderTextF: UITextField!
@IBOutlet weak var numberOfGuestsLabel: UILabel!
@IBOutlet weak var dateOfEventLabel: UILabel!
@IBOutlet weak var actualDateOfEvent: UILabel!
@IBOutlet weak var totalCostOfEventLabel: UILabel!
@IBOutlet weak var actualCostOfEvent: UILabel!
@IBOutlet weak var guestNumberCount: UILabel!


var ticketHolderName: String?
var costOfEvent: String?
var dateOfEvent: String?
var nameOfEvent: String?

这是我用来连接一切的功能

  func dataTransferVerification() {
    if let nametoLoad = ticketHolderName {
        nameOTicketHolderTextF.text = nametoLoad
    }
    
    if let costToLoad = costOfEvent {
        actualCostOfEvent.text = costToLoad
    }
    
    if let datetoLoad = dateOfEvent {
        actualDateOfEvent.text = datetoLoad
    }
    
    if let nametoLoad = nameOfEvent {
        navigationItem.title = nametoLoad
    }
}

UIStepper 函数,我不知道该放什么:

@IBAction func guestsCount(_ sender: UIStepper) {
    guestNumberCount.text = String(Int(sender.value))
    
  
    
}

现在我想知道,凭借我所获得的,如何使用成本值并使其成为原始值,以便当步进值发生变化时,原始值永远不会改变。假设数据传输结束时是 5.00 美元,我只希望 5 美元乘以步进值,我不希望它改变值。

解决方法

首先,您需要获取成本字符串的数字版本。

在视图控制器的顶部:

private var costDecimal : Decimal = 0

在您所说的“数据传输”中(您可以在 segue 之前或之后执行此操作 - 并不重要):

let formatter = NumberFormatter()
formatter.numberStyle = .currency

if let number = formatter.number(from: str) {
    let amount = number.decimalValue
    print(amount)
    self.costDecimal = amount
}

(取自https://stackoverflow.com/a/41884823/560942

现在,在您的步进器中:

@IBAction func guestsCount(_ sender: UIStepper) {
    guestNumberCount.text = String(Int(sender.value))
    //multiply sender.value by the cost that was passed in
    let totalCost = Decimal(sender.value) * costDecimal
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。