Я новичок в кодировании, поэтому, пожалуйста, потерпите меня.Я следил за онлайн-учебником, который работал со списками, чтобы составить список привычек.У меня есть контроллер табличного представления, который показывает список привычек и последовательность, которая представляет модально контроллер представления, который имеет текстовые поля для добавления привычки.
введите описание изображения здесь Каждый раз, когда он запускаетсяничего не происходит, когда я нажимаю на кнопки «Сохранить» и «Отмена».Я понимаю, что это неопределенный вопрос, так как он не указывает на конкретную проблему, но я действительно изо всех сил пытаюсь решить эту проблему и был бы очень признателен, если бы кто-то вычитал код.Приложение собирается и работает без предупреждений.
Это контроллер представления таблицы, который показывает привычки:
class TableViewController: UITableViewController {
//MARK: Properties
var habits = [Habit]()
//MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return habits.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Table view cells are reused and should be dequeued using a cell identifier.
guard let cell = tableView.dequeueReusableCell(withIdentifier: "cell") else {
fatalError("The dequeued cell is not an instance of ViewController.")
}
// Fetches the appropriate habit for the data source layout.
let habit = habits[indexPath.row]
cell.textLabel?.text = habit.mainGoal
cell.detailTextLabel?.text = habit.microGoal
return cell
}
@IBAction func unwindToHabitList(sender: UIStoryboardSegue) {
if let source = sender.source as?ViewController, let habit = source.habit {
//add a new habit
let newIndexPath = IndexPath(row: habits.count, section: 0)
habits.append(habit)
tableView.insertRows(at: [newIndexPath], with: .automatic)
}
}
Это контроллер представления, который добавляет привычку:
class ViewController: UIViewController, UITextFieldDelegate, UINavigationControllerDelegate {
@IBOutlet weak var saveButton: UIBarButtonItem!
@IBOutlet weak var mainGoalTextField: UITextField!
@IBOutlet weak var microGoalTextField: UITextField!
var habit: Habit?
//method for configuring controller before presenting
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
//configure this destination view controller only when save button is pressed
guard let button = sender as? UIBarButtonItem, button === saveButton else {
os_log("save button was not pressed, cancelling", log: OSLog.default, type: .debug)
return
}
let mainGoal = mainGoalTextField.text ?? ""
let microGoal = microGoalTextField.text ?? ""
//set the habit to be passed on to tableViewController after the unwind segue
habit = Habit(mainGoal: mainGoal, microGoal: microGoal)
}
@IBAction func cancel(_ sender: UIBarButtonItem) {
// Depending on style of presentation (modal or push presentation), this view controller needs to be dismissed in two different ways.
let isPresentingInAddHabitMode = presentingViewController is UINavigationController
if isPresentingInAddHabitMode {
dismiss(animated: true, completion: nil)
}
else if let owningNavigationController = navigationController{
owningNavigationController.popViewController(animated: true)
}
else {
fatalError("The ViewController is not inside a navigation controller.")
}
}
Я ценю всех и каждогопомогите заранее!
СОЕДИНЕНИЯ РАСПОЛОЖЕНИЯ:
ПОДКЛЮЧЕНИЯ КОНТРОЛЛЕРА ТАБЛИЦЫ ДОБАВИТЬ СОЕДИНЕНИЯ С КОНТРОЛЛЕРОМ ПРОСМОТРА ВИДА