Swift - 将文本和 int 从 vc1 传递到 vc 2 (uitextfield -> vc2 中的标签)

标签 swift

在第二个 VC 中仅将输入文本从文本字段传递到标签!但是我希望当用户在 uitextfield 中输入数字 10 时(1 张票是 2 欧元,所以 10 张票 * 2 欧元是 20)并且当我单击“支付”按钮时,以便 SUM 可以显示在第二个 VC 的标签中,我认为 viewdidload VC2 发生在prepareForSegue 之前,我不知道。当我第二次单击“付款”按钮时它有效,但当我第一次单击“付款”按钮时标签显示零,帮助:)嵌入导航 Controller 中进行导航。

 1

VC1

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var howManyTickets: UITextField!

var sumTicketsAndPriceOfTickets = Int()
var priceOfTicket = 2 // euros

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


@IBAction func platiTeKarte(sender: AnyObject) {

    sumTicketsAndPriceOfTickets = howManyTickets.text.toInt()! * priceOfTicket

    }

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    let driver = segue.destinationViewController as! primaocViewController

    var whatToPass = sumTicketsAndPriceOfTickets

    driver.receiver = whatToPass
}
}

VC2

import UIKit

class primaocViewController: UIViewController {

@IBOutlet weak var displaySum: UILabel!

var receiver:Int!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    self.displaySum.text = String(receiver)

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

最佳答案

如果您的按钮直接连接到 segue,那么您也不需要 @IBAction。正如您所看到的,prepareForSegue 发生在 Pay 按钮的 @IBAction 之前。只需在 prepareForSegue 中计算您的值即可:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    let driver = segue.destinationViewController as! primaocViewController

    driver.receiver = (howManyTickets.text.toInt() ?? 0) * priceOfTicket
}

我更改了报酬的计算以使用nil合并运算符??。这通常是一种更安全的方法,因为如果 toInt() 由于任何原因返回 nil,在这种情况下它将只使用 0 而不会崩溃.

关于Swift - 将文本和 int 从 vc1 传递到 vc 2 (uitextfield -> vc2 中的标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30956522/

相关文章:

ios - 使用 UIScrollView 进行分页

ios - QuerySnapshot 在 Firestore 中运行时出错 - 抛出错误 Skipping epollex because skipping EPOLLEX GRPC_LINUX_EPOLL is not defined

ios - 在 Swift 3.0 中从 Firebase 获取数据

swift - 如何测试 Swift 字典中是否不存在键?

ios - 带有 NSURLSession 的 Swift 中的 HTTP 请求

ios - HTML 特殊键显示在帖子描述中

swift - 如何在 Swift 中翻译/本地化变量

ios - 如何生成数字和字母混合的随机代码 - Swift

ios - 当创建带有框架的惰性按钮时,这是在左上角创建的,为什么会发生这种情况?

ios - 将 ARCharts 框架/项目导入 Swift 项目