问题描述
我正在尝试将输入到 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 (将#修改为@)