Ich habe zwei View-Controller und eine schnelle Datei. Ich möchte die Daten von einem View-Controller zum anderen weitergeben, ohne den anderen View-Controller zu verwenden oder den anderen zu präsentieren.Werte aus dem Textfeld eines View-Controllers abrufen
View-Controller:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var questions:[Question] = []
var sub = ""
var send = ""
var det = ""
@IBOutlet weak var questionsender: UISegmentedControl!
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.tableView.reloadData()
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return questions.count
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 50
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "forumcell", for: indexPath) as! ForumTableViewCell
cell.questionsubject.text = questions[indexPath.row].subject
cell.sender.text = questions[indexPath.row].sender
return cell
}
}
Swift-Datei:
import Foundation
class Question
{
var subject = ""
var descript = ""
var sender = ""
init(subject : String, descrip: String,sender : String)
{
self.sender=sender
self.descript=descrip
self.subject=subject
}
}
Second-View-Controller:
import UIKit
class AddVC: UIViewController,UITextFieldDelegate {
var qsender = ""
var subject = ""
var details = ""
@IBAction func postBttn(_ sender: Any) {
if questiondetails.text == "" || question_sender.text == "" || question_subject.text == ""
{
let alert = UIAlertController(title: "Invalid!", message: "One of the fields has not been entered", preferredStyle: .alert)
let bttn = UIAlertAction(title: "Ok", style: .cancel, handler: nil)
alert.addAction(bttn)
}
else
{
qsender = question_sender.text
subject = question_subject.text
details = questiondetails.text
let q=Question(subject: subject, descrip: details, sender: qsender)
let v = ViewController()
v.send = qsender
v.sub = subject
v.det = details
dismiss(animated: true, completion: nil)
}
}
@IBAction func closeBttn(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
@IBOutlet weak var question_subject: UITextView!
@IBOutlet weak var question_sender: UITextView!
@IBOutlet weak var closeBttn: UIButton!
@IBOutlet weak var questiondetails: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
question_subject.placeholderText="Sender"
question_subject.placeholderText="Subject"
questiondetails.placeholderText="Description"
let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(swiped(_ :)))
swipeDown.direction = .down
self.view.addGestureRecognizer(swipeDown)
}
func swiped(_ gesture:UISwipeGestureRecognizer)
{
dismiss(animated: true, completion: nil)
}
}
Das Objekt v I für View-Controller erstellt wurden, können die Daten nicht Mitglieder durch die Aktualisierung AddVC-Klasse.
Wie hängen die 2 View Controller zusammen? Geht man in den anderen über? Und gibt es eine Reihenfolge, in der sie dem Benutzer präsentiert werden? – Brian
Nicht zu 100% sicher, warum diese beiden viewControllers nicht miteinander verbunden sein sollten, aber Sie können immer 'CoreData' verwenden, um die notwendigen Daten zu speichern und abzurufen. – sCha
Die Werte werden vom Benutzer angegeben. Ich entwickle ein Forum, also müssen die eingegebenen Daten zum Server gehen. –