2016-05-27 2 views
0

В настоящее время я пишу специальное приложение для повышения производительности, и я бегу в блокпост. Я использую метод кодирования MVC. У меня есть все расчеты времени в классе модели и обновления вида в классе контроллера.Как отправить данные из модели обратно в контроллер в swift?

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

Вот мой ViewController класс:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var display: UILabel! 

    @IBOutlet weak var cartonInput: UITextField! 

    @IBOutlet weak var peopleInput: UITextField! 

    @IBAction func goButton(sender: UIButton) { 
     let calculator = MyClass() 
     if let people = Int(peopleInput.text!){ 
      if let carton = Int(cartonInput.text!){ 
       let placeholder = calculator.timeCalculation(carton, people: people) 
       calculator.startTimer(placeholder) 

      } 
     } 
    } 

} 

Вот модель, которая обрабатывает все расчеты:

import Foundation 

    class MyClass { 

     var timerCounter:NSTimeInterval! 


     func stringFromTimeInterval(interval: NSTimeInterval) -> String { 
      let interval = Int(interval) 
      let seconds = interval % 60 
      let minutes = (interval/60) % 60 
      let hours = (interval/3600) 
      return String(format: "%02d:%02d:%02d", hours, minutes, seconds) 
     } 

     func startTimer(hour: Int) { 
      timerCounter = NSTimeInterval(hour) 
      NSTimer.scheduledTimerWithTimeInterval(1, target: self, 
       selector: #selector(MyClass.onTimer(_:)), 
       userInfo: nil, repeats: true) 
     } 

     @objc func onTimer(timer:NSTimer!){ 
      //this is where I need to send the data from, back to the 
      //controller so that the controller can update the display. 
      timerCounter! -= 1 
     } 


     func timeCalculation(cartons: Int, people: Int) -> Int{ 
      let numberOfCartons = Double(cartons) 
      let numberOfPeople = Double(people) 
      let timeCalculations: Double = numberOfCartons/4.7/
       numberOfPeople 
      let timeSeconds = (timeCalculations * 60) * 60 
      return Int(round(timeSeconds)) 

     } 
    } 

Я новичок, так что любая помощь с объяснением объясняется просто, насколько это возможно будет очень признателен. Это поможет мне учиться и расти.

ответ

1

Ну, в самом общем смысле, модель может взаимодействовать с контроллером с помощью делегатов, протоколы, уведомления и т.д. Например

По словам источника, ссылка на который я представлю в конце этого поста три общие модели для модели, чтобы передавать данные в контроллер являются:

  1. Делегация
  2. Центр уведомлений
  3. значение ключа наблюдения

Основной источник информации this

Но, чтобы понять все, что в глубине, пройти через link.

Простым и понятным примером является пример IBAction Delegation, связанный с UIButton.

Смежные вопросы