通过后文本未出现在标签上

问题描述

我正在尝试将输入到 UIText 字段中的值传递给另一个 ViewController 并将该条目显示标签中。当用户按下“保存”并被传递时,该值被保存,但由于某种原因它没有显示标签上。下面是“首选项”视图控制器上的代码

import UIKit
import GoogleMobileAds

extension UIViewController {
    func showAlert(title: String,message: String,actionName: String) {
        let alertController = UIAlertController(title: title,message: message,preferredStyle: .alert)
        alertController.addAction(UIAlertAction(title: actionName,style: .default))
        self.present(alertController,animated: true,completion: nil)
    }
    
    func showAlertWithReturnAction(title: String,actionName: String,completion: @escaping() -> Void) {
        let alertController = UIAlertController(title: title,style: .default,handler: { action in
                                                    completion()
                                                }))
        self.present(alertController,completion: nil)
    }
}

class preferences: UIViewController,GADBannerViewDelegate {
    
    var bannerView: GADBannerView!

    @IBOutlet weak var saveButton: UIButton!
    
 
    @IBOutlet weak var namePreference: UITextField!
    
    var savednamePref: String? = ""

    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // In this case,we instantiate the banner with desired ad size.
        bannerView = GADBannerView(adSize: kGADAdSizeBanner)
                addBannerViewToView(bannerView)
              
                bannerView.delegate = self
        view.backgroundColor = .black
        self.view.backgroundColor = .black
        let gameNameVariable = String()
        namePreference.text = String(gameNameVariable)
        addToolBar()
        
    
        
        DirectoryHandler.shared.read(filename: preferenceRecordFileName) { (prefDict,error) in
            if error != nil {
                self.showAlert(title: "Error!",message: error!.localizedDescription,actionName: "dismiss")
            } else {
                /// Read Data
                dispatchQueue.main.async {
                    self.savednamePref = prefDict["prefName"]
                  
                    self.namePreference.text = self.savednamePref
                   
                }
            }
        }
    }
    
    
    @objc func cancelNumberPad() {
        self.view.endEditing(true)
    }
    
    @objc func doneWithNumberPad() {
        self.view.endEditing(true)
    }
    
    private func addToolBar() {
        let numberToolbar = UIToolbar(frame:CGRect(x: 0,y: 0,width: UIScreen.main.bounds.width,height: 50))
        numberToolbar.barStyle = .default
        numberToolbar.items = [
        UIBarButtonItem(title: "Cancel",style: .plain,target: self,action: #selector(cancelNumberPad)),UIBarButtonItem(barButtonSystemItem: .flexibleSpace,target: nil,action: nil),UIBarButtonItem(title: "Done",action: #selector(doneWithNumberPad))]
        numberToolbar.sizetoFit()
        namePreference.inputAccessoryView = numberToolbar
    }
        
    @IBAction func copytext(_ sender: Any) {
      
        if namePreference.text!.trimmed().isEmpty || namePreference.text!.trimmed().isEmpty {
            self.showAlert(title: "Missing info",message: "Please enter all fields.",actionName: "dismiss")
        } else {
            let jsonToSave = DirectoryHandler.shared.convertToJsonString(json: [
                "prefName": namePreference.text!.trimmed(),])
            DirectoryHandler.shared.save(text: jsonToSave,filename: preferenceRecordFileName) { (saved,error) in
                if !saved {
                    self.showAlert(title: "Failed to save",message: error?.localizedDescription ?? "",actionName: "dismiss")
                } else {
                    self.showAlertWithReturnAction(title: "Saved!",message: "Preferences are saved!",actionName: "dismiss") {
                        /// Taking To Calc Screen
                        let storyBoard: UIStoryboard = UIStoryboard(name: "Main",bundle: nil)
                        let alcatraz = storyBoard.instantiateViewController(withIdentifier: "alcatraz") as! traz
                        alcatraz.savednamePref = self.savednamePref
                      
                     //   dispatchQueue.main.async {
                     //       self.navigationController?.pushViewController(alcatraz,animated: true) }
                       
                    }
                }
            }
        }
    }
    
    func addBannerViewToView(_ bannerView: GADBannerView) {
               bannerView.translatesAutoresizingMaskIntoConstraints = false
               view.addSubview(bannerView)
               view.addConstraints(
                 [NSLayoutConstraint(item: bannerView,attribute: .bottom,relatedBy: .equal,toItem: bottomLayoutGuide,attribute: .top,multiplier: 1,constant: 0),NSLayoutConstraint(item: bannerView,attribute: .centerX,toItem: view,constant: 0)
                 ])
                bannerView.adUnitID = "ca-app-pub-9944401739416572/3708634126"
                bannerView.rootViewController = self
                bannerView.load(GADRequest())
              }
}

下面是条目传递到的 ViewController 上的代码。如果我需要第二个控制器的更多代码,请告诉我。我做错了什么?

var savednamePref: String? = ""
    var fromPrefScreen: Bool = false

 copylabel.text = "\(savednamePref) \(buildingNameLabel.text!) to lvl \(currentLevel): P5 (\(totalrewardfive.removeZerosFromEnd())) P4 (\(totalrewardfour.removeZerosFromEnd())) P3 (\(totalrewardthree.removeZerosFromEnd())) P2 (\(totalrewardtwo.removeZerosFromEnd())) P1 (\(totalrewardone.removeZerosFromEnd()))"
        
       
        
       
    }
  
    
    @IBAction func segmentChangeLabel(_ sender: Any) {
        
        switch segmentcopy.selectedSegmentIndex
            {
            case 0:
                copylabel.text = "\(savednamePref!) \(buildingNameLabel.text!) to lvl \(currentLevelStepper.value.removeZerosFromEnd()): P5 (\(rateRewardLinkFive.text!)) P4 (\(rateRewardLinkFour.text!)) P3 (\(rateRewardLinkThree.text!)) P2 (\(rateRewardLinkTwo.text!)) P1 (\(rateRewardLinkOne.text!))"
            case 1:
                copylabel.text = "\(savednamePref!) \(buildingNameLabel.text!) to lvl \(currentLevelStepper.value.removeZerosFromEnd()): P1 (\(rateRewardLinkOne.text!)) P2 (\(rateRewardLinkTwo.text!)) P3 (\(rateRewardLinkThree.text!)) P4 (\(rateRewardLinkFour.text!)) P5 (\(rateRewardLinkFive.text!))"
            default:
                break
            }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)