大家好,我是第一次使用该网站,首先我要说我是Swift的初学者,也为我的英语不好而感到抱歉。好吧,我正在尝试使用Realm数据模型将数据从View Controller的TextView传递回Tableview Controller。 我只想使用一个数据类[Called Note]来执行此操作。我可以将数据从表视图转发到视图控制器,但是问题是我无法将数据转发回去。仅仅因为我想使用一个数据类,我实际上不知道该怎么做。在Textview中更新领域之后,我应该在哪里使用领域更新我的数据。 我遇到的另一个问题是我无法指定我选择的哪一行(indexPath)[我的意思是在代码中]将数据发送回该确切的行。当您有两个/多个模型类使用关系时,有一种方法,但是正如我所说,我不想使用多个类。那么这是解决此问题的一种方法,还是我的数据模型应该使用多个类?谢谢回答 这是我来自MainTableViewController,数据模型类和Viewcontroller的代码:
数据模型:
import Foundation
import RealmSwift
class Note: Object {
@objc dynamic var title: String = ""
@objc dynamic var dateCreated: Date?
}
viewController:
import UIKit
import RealmSwift
protocol RecieveData {
func sendingDataBack(data: Note)
}
class ViewController: UIViewController,UITextViewDelegate {
@IBOutlet weak var textView: UITextView!
let realm = try! Realm ()
var delegate: RecieveData?
var tempText: String?
var noteMessages: Note?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
textView.delegate = self
textView.text = tempText
}
func textViewDidEndEditing(_ textView: UITextView) {
textView.isEditable = true
}
}
MainTableViewController:
import UIKit
import RealmSwift
class MainTableViewController: UITableViewController, RecieveData {
let realm = try! Realm()
var noteArray: Results<Note>?
override func viewDidLoad() {
super.viewDidLoad()
loadData()
}
// MARK: - Table view data source
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return noteArray?.count ?? 1
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = noteArray?[indexPath.row].title ?? "add new title"
cell.detailTextLabel?.text = noteArray?[indexPath.row].title ?? ""
return cell
}
// MARK: - Table View Delegate Methods:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "goToSecondVC", sender: self)
}
// Data Manipulation Methods
func saveData(data: Note) {
do {
try realm.write {
realm.add(data)
}
} catch {
print("saving data failed! \(error)")
}
tableView.reloadData()
}
func loadData () {
noteArray = realm.objects(Note.self).sorted(byKeyPath: "dateCreated", ascending: true)
tableView.reloadData()
}
// MARK: - Passin Data Between View Controllers Methods
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToSecondVC" {
let detailVC = segue.destination as! ViewController
detailVC.delegate = self
if let indexPath = tableView.indexPathForSelectedRow {
detailVC.tempText = noteArray?[indexPath.row].title
}
}
}
func sendingDataBack(data: Note) {
}
}