Swift4 - вставить строку текста в текстовое поле в другом представлении / классе - PullRequest
0 голосов
/ 05 марта 2019

Я воссоздаю простое приложение, которое представляет собой регистратор случаев фельдшера, по сути, это набор кнопок или текстовых полей, которые получают метку времени .text и вставляют их в поле UItextView, чтобы создать хронологический список действий, к которым можно обратитьсякогда фельдшер пишет свои записи о пациенте.

Я создал приложение, управляемое панелью вкладок, используя шаблон Xcode.Я создал UIbuttons и UItextfields, которые создают и вставляют строку в тестовое UItextview на том же поле.Я создал функцию, которая создает строку с отметкой времени

У меня возникли проблемы с отображением той же строки в UItextview на втором экране.

ИССЛЕДОВАНИЕ Поскольку я новичок в этом, яЯ прочитал здесь много постов с пользовательскими настройками по умолчанию, segues, делегатами / протоколами и, кажется, не могу эффективно реализовать их в моих конкретных обстоятельствах (все еще не уверен, что понимаю их достаточно, чтобы сделать это).

У меня естьпонял, что я сохранил строку в значение user.default, а затем я могу использовать это значение во 2-м представлении с функцией, чтобы вставить текст и очистить значение user.default, но у меня не получается запустить функциюс первого взгляда?(получите сообщение об ошибке nil value).

Я чувствую, что это должен быть довольно простой процесс, поэтому не заставить его работать очень расстраивает ...

ВОПРОС Итак, я надеялся, что кто-томожет быть в состоянии продемонстрировать простой способ получить вход UItextField.text из FirstViewController, а затем, когда UIbutton нажата на FirstViewController, передать строку в SecondViewController и вставить ее в поле UITextView (я не хочу отображать 2-й вид).

Из этой демонстрации я надеюсь, что смогу реверс-инжиниринг решения в свой код в качестве возможности обучения, не просто передав мне точный код на серебряном блюде. ​​

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)
    }

}

1 Ответ

0 голосов
/ 05 марта 2019

Я знаю, что это не демо, но, возможно, может помочь вам

Создайте новый файл NSObject

внутри класса, поместите новую переменную

import UIKit

class test: NSObject {
    var a:String = ""
}

вваш ViewController объявляет новую переменную, ссылающуюся на класс

let testVar = test()

в вашей программе проверки customNote

test.a = customNote

, затем на вашем втором ViewController сделайте то же самое

let testVar = test()
testVar.a //this is your customNote String

надеюсь, это поможет

...