簡體   English   中英

將字符串從viewController發送到另一個

[英]Send a string from a viewController to another one

請在將這個問題標記為重復之前,我想知道為什么我的代碼失敗,而不是發送給另一個正在運行的代碼。

我是Swift的新手,當我單擊同一按鈕時,我想從viewController發送一個變量“ um_words”(當單擊按鈕時計算),將該變量保存在secondViewController中並在textView中顯示。 為此,我嘗試對此代碼進行許多修改,這在控制台中沒有給出任何錯誤,但沒有在textView上顯示變量的值:

第一風投

import UIKit
import Foundation

class TransViewController: UIViewController {

@IBOutlet var trad_text: UITextView!
@IBOutlet var buttonTrad: UIButton!
@IBOutlet var labelsitoh: UILabel!

var num_words = 0

@IBAction func butCalc(_ sender: UIButton) {

    let text = trad_text.text

    num_words =  (text?.components(separatedBy: " ").count)!-1

     func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        var DestViewController : PaymentViewController = segue.destination as! PaymentViewController

        DestViewController.num_words =  String(num_words)
    }

}


override func viewDidLoad() {
    super.viewDidLoad()

    trad_text!.layer.borderWidth = 1
    trad_text!.layer.cornerRadius = 20
    trad_text!.layer.borderColor = UIColor(red:0.22, green:0.26, blue:0.39, alpha:1.0).cgColor
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}

}

第二次風投

import UIKit
import Foundation

class PaymentViewController: UIViewController {

@IBOutlet var labelImport: UITextView!

var num_words = String()

override func viewDidLoad() {
    super.viewDidLoad()

    labelImport.text = num_words

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

}

我有一個關於為什么它不起作用的假說:函數“ prepare”沒有被調用; 僅在單擊按鈕時才轉到下一個VC ...

感謝您的時間。

看到:

IBAction func butCalc(_ sender: UIButton) {
    let text = trad_text.text
    num_words =  (text?.components(separatedBy: " ").count)!-1
    self.performSegue(withIdentifier: "yourSegueIdentifier", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    if (segue.identifier == "yourSegueIdentifier") {
        var destViewController : PaymentViewController = segue.destination as! PaymentViewController
        destViewController.num_words =  String(num_words)
    }
}

您已經在另一個功能中創建了一個功能...請嘗試此操作。

PS:我沒有測試此代碼

func prepare應該在按鈕操作之外,觸發segue時將調用它。

@IBAction func butCalc(_ sender: UIButton) {

    let text = trad_text.text

    num_words =  (text?.components(separatedBy: " ").count)!-1

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    var DestViewController : PaymentViewController = segue.destination as! PaymentViewController

    DestViewController.num_words =  String(num_words)

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM