我正在重新创建一个简单的应用程序,它是护理人员病例记录器,实际上它是一堆按钮或文本字段,它们将其 .text 值时间戳记并粘贴到 UItextView 字段中,以创建按时间顺序排列的操作列表以供引用当护理人员写下他们的病人笔记时。
我使用 Xcode 模板创建了一个选项卡栏控制的应用程序。我已经创建了 UIbuttons 和 UItextfields,它们创建字符串并将其粘贴到同一字段上的测试 UItextview 中。我创建了一个创建时间戳字符串的函数
我在第二个 View 的 UItextview 上显示相同的字符串时遇到了麻烦。
研究因为我是新手,所以我在这里阅读了很多关于用户默认值、segues、委托(delegate)/协议(protocol)的帖子,并且似乎无法在我的特定情况下有效地实现这些内容(仍然不太确定我是否足够理解这些内容)。
我发现我已将字符串保存到 user.default 值中,然后我可以在第二个 View 中使用该值与 func 来插入文本并清除 user.default 值,但我似乎无法让函数从第一个 View 运行? (遇到nil值错误)。
我觉得这应该是一个非常简单的过程,所以不能让它发挥作用是非常令人沮丧的......
问题所以我希望有人能够演示从 FirstViewController 获取 UItextField.text 输入的简单方法,然后当在 FirstViewController 上按下 UIbutton 时将字符串传递给 SecondViewController 并将其插入到 UITextView 字段中(我不想显示第二个 View )。
通过这个演示,我希望能够将解决方案逆向工程到我的代码中,作为一个学习机会,而不仅仅是将我的确切代码放在银盘上。
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 中声明一个引用该类的新变量
let testVar = test()
在您的自定义注释检查器中
test.a = customNote
然后在你的第二个 ViewController 上,做同样的事情
let testVar = test()
testVar.a //this is your customNote String
希望这有帮助
Tôi là một lập trình viên xuất sắc, rất giỏi!