我正在重新创建一个简单的应用程序,它是一个护理案例记录器,实际上它是一堆按钮或文本字段,它们将.text值标记时间标记并粘贴到UItextView字段中,以创建按时间顺序排列的动作列表,以便在护理人员时引用写下他们的病人笔记。
我使用Xcode模板创建了一个标签栏控制的应用程序。我创建了UIbuttons和UItextfields,用于创建并将字符串粘贴到同一字段的测试UItextview中。我创建了一个创建时间戳字符串的函数
我在第二个视图的UItextview上显示相同的字符串时遇到了麻烦。
研究由于我只是新手,我在这里阅读了很多关于用户默认,segues,委托/协议的帖子,似乎无法在我的具体情况下有效地实现这些(仍然不能确定我理解那些已经足够的了) 。
我已经明白我已经将字符串保存到user.default值,然后我可以在第二个视图中使用该值,使用func插入文本并清除user.default值,但我似乎无法获得该功能从第一个视图运行? (得到遇到的零值错误)。
我觉得这应该是一个非常简单的过程,所以不能让它起作用是非常令人沮丧的......
问题所以我希望有人能够演示从FirstViewController获取UItextField.text输入的简单方法,然后在FirstViewController上按下UI按钮时将字符串传递给SecondViewController并将其插入到UITextView字段中(我不想要显示第二个视图)。
从这个演示中我希望我可以将一个解决方案反向设计为我的代码作为一个学习机会,而不仅仅是在银盘上将我的确切代码交给我。
import UIKit
class FirstViewController: UIViewController, UITextFieldDelegate {
// View OUTLETS
@IBOutlet weak var customNoteField: UITextField!
@IBOutlet weak var reportTextViewFieldTemp: UITextView!
@IBOutlet weak var lastEntryTV: UITextView!
@IBOutlet weak var caseIDTF: UITextField!
// Class VARIABLES
let timeButtonArray = ["blank0", "Call Received1", "Dispatched2", "Enroute3", "On Scene4", "At Patient5", "Depart Scene6", "At Hospital7", "Available8",]
// VIEW DID LOAD STUFF
override func viewDidLoad() {
super.viewDidLoad()
self.hideKeyboardWhenTappedAround()
self.customNoteField.delegate = self
}
//TIMING BUTTON PRESSED
@IBAction func timeButtonPressed(_ sender: UIButton) {
//GATHER DATA
let timingButtonInput = timeButtonArray[sender.tag]
let DTGstamp = dateTimeStamp()
//FORM STRING
let buttonData = ("\(DTGstamp) \(timingButtonInput) \n")
//SEND buttonDATA TO ReportViewController
/*??? The part I need help with*/
}
//CUSTOM ENTRY UITextfield PRESSED
@IBAction func customNoteDone(_ sender: Any) {
//GATHER DATA
let DTGstamp = dateTimeStamp()
let customNote = customNoteField.text
//FORM STRING
let customData = ("\(DTGstamp) \(customNote) \n")
//TEST FOR EMPTY TEXT
if customNote != "" {
//SEND customDATA TO ReportViewController
/*??? The part I need help with*/
}
//FUNCTION TO GENERATE DATE,TIME GROUP AS CONSTANT
func dateTimeStamp() -> String {
var date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "ddLLLyy HH:mm:ss"
print (dateFormatter.string(from: date))
return (dateFormatter.string(from: date))
}
}
//
// ReportViewController.swift
// EMS Case Logger
//
// Created by Allan Ravenscroft on 3/3/19.
// Copyright © 2019 Allan Ravenscroft. All rights reserved.
//
import UIKit
class ReportViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var reportTextViewField: UITextView!
@IBOutlet weak var reportEmailButton: UIButton!
@IBOutlet weak var reportEditButton: UIButton!
@IBOutlet weak var reportClearButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
hideKeyboardWhenTappedAround()
reportEditButton.layer.cornerRadius = reportEditButton.frame.height / 2
reportEmailButton.layer.cornerRadius = reportEmailButton.frame.height / 2
reportClearButton.layer.cornerRadius = reportClearButton.frame.height / 2
}
//Actions when the clear button is pressed
@IBAction func clearButtonPressed(_ sender: Any) {
reportTextViewField.text = ""
}
//Actions when the edit button is pressed
@IBAction func editButtonPressed(_ sender: Any) {
}
//Actions when the email button is pressed
@IBAction func emailButtonPressed(_ sender: Any) {
showMailComposer(bodytext: reportTextViewField.text)
}
}
我知道这不是一个演示,但也许可以帮助你
制作一个新的NSObject文件
在类里面放了一个新变量
import UIKit
class test: NSObject {
var a:String = ""
}
在您的ViewController中声明一个引用该类的新var
let testVar = test()
在您的customNote检查器中
test.a = customNote
然后在你的第二个ViewController,做同样的事情
let testVar = test()
testVar.a //this is your customNote String
希望这可以帮助