Я пытаюсь создать приложение-напоминание.Я прошел какой-то путь, но застрял в этом «спасительном» шаге.У меня есть два viewControllers.Один для того, где я регистрирую свою задачу, и другой для того, где хранить эти задачи.Это работает нормально, но как только я перезапускаю приложение, оно исчезает.Я видел много учебных пособий и описаний того, как решить эту проблему, но ни одного из них для моего случая, когда мне нужно вызвать «метод сохранения» на нажатие кнопки на одном VC, а затем сохранить / загрузить их в виде таблицы вдругой VC.
Есть ли кто-нибудь, у кого есть какие-либо советы или ссылки, где я могу прочитать об этом, или какие-либо идеи о том, как я мог бы решить эту проблему?
Вот как выглядят виды(очень просто).
Вид, в котором вы зарегистрированы, данные в полях сохраняются:
Второй Vc с TableView, в котором хранятсяdata:
Вот некоторый код для первого Vc (тот, из которого вы добавляете / регистрируете новую задачу):
//
// ViewControllerNew.swift
// easy reminder 2
//
// Created by Andreas Sjöstedt on 2019-02-04.
// Copyright © 2019 Andreas Sjöstedt. All rights reserved.
//
import UIKit
class ViewControllerNew: UIViewController, UITextFieldDelegate {
@IBOutlet weak var TaskTextField: UITextField!
@IBOutlet weak var todaysdate: UILabel!
@IBOutlet weak var currenttime: UILabel!
@IBAction func timeSlider(_ sender: UISlider) {
currenttime.text = String(Int(sender.value))
}
@IBAction func SavedButtonPressed(_ sender: Any) {
ToDoController.addTodo(newTodo: TaskTextField.text! + " " + currenttime.text! + " " + todaysdate.text!)
// code for add the data in TableView on Edit Site
}
var LableTTF = String()
override func viewDidLoad() {
super.viewDidLoad()
getCurrentDate()
// the current date text//
getSingle()
// acces the calendar//
getCurrentTime()
// the current time lable//
TaskTextField.delegate = self
// the task-text-lable//
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: "MyNoteName"), object: nil, queue: OperationQueue.main) { (Notification) in
let dateVc = Notification.object as! ViewControllerDate
self.todaysdate.text = dateVc.formattedDate
// notification reciever
}
}
func getCurrentDate(){
let formatter = DateFormatter()
formatter.dateStyle = .short
//formatter.timeStyle = .medium
formatter.dateFormat = "dd-MM-yyyy"
let str = formatter.string(from: Date())
todaysdate.text = str
// code for showing current date //
}
func getCurrentTime(){
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.dateFormat = "HH:mm"
let str = formatter.string(from: Date())
currenttime.text = str
// code for showing current time //
}
func getSingle(){
let date = Date()
let calendar = Calendar.current
_ = calendar.component(.year, from: date)
_ = calendar.component(.month, from: date)
_ = calendar.component(.day, from: date)
// code for access the calendar //// code for passing the data to other view //
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
TaskTextField.resignFirstResponder()
return true
//Hide keyboard when press "klar"//
}
}
И вотВот некоторый код для другого Vc (который содержит TableView, в котором хранятся данные:
//
// ViewControllerEdit.swift
// easy reminder 2
//
// Created by Andreas Sjöstedt on 2019-02-04.
// Copyright © 2019 Andreas Sjöstedt. All rights reserved.
//
import UIKit
class ViewControllerEdit: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidAppear(_ animated: Bool){
super.viewDidAppear( animated )
tableView.reloadData()
}
func numberOfSections(in tableView: UITableView) -> Int{
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return ToDoController.todosArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = ToDoController.todosArray[indexPath.row]
cell.textLabel?.textColor = .white
return cell
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCell.EditingStyle.delete {
ToDoController.removeTodo(atIndex: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
}
}
}
Извините, здесь также есть некоторый код для контроллера ToDo, если именно здесь нужно добавить эту функцию:
//
// ToDoController.swift
// easy reminder 2
//
// Created by Andreas Sjöstedt on 2019-02-12.
// Copyright © 2019 Andreas Sjöstedt. All rights reserved.
//
import UIKit
class ToDoController: NSObject {
static var todosArray:Array<String> = []
class func addTodo( newTodo:String){
ToDoController.todosArray.append( newTodo)
}
class func removeTodo(atIndex:Int) {
ToDoController.todosArray.remove(at: atIndex)
}
}