Так что я довольно новичок в понятиях Reactive Swift / Cocoa & MVVM.Мне интересно, если у меня ViewModel инициализирован не в том месте.
Модель
struct userInfo {
let name: String
let birthday: Date
init(name: String, birthday: Date) {
self.name = name
self.birthday = birthday
}
}
class User {
let user = MutableProperty([userInfo]())
}
ViewModel
class UserViewModel {
let user: MutableProperty<userInfo>
init(_ user: userInfo) {
self.user = MutableProperty(user)
}
var nameTextSignal: SignalProducer<String, NoError> {
return user.producer.map { $0.name }
}
}
UserSlide View с выходами
class UserSlide: UIView, UITextViewDelegate {
@IBOutlet weak var userName: UITextField!
@IBOutlet weak var dateField: UITextField!
let picker = UIDatePicker()
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
createDatePicker()
}
View Controller, который ссылается на ViewModel и привязывает его кUILabel из представления UserSlide
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var pageControl: UIPageControl!
var userviewmodel: UserViewModel!
var slides:[Any] = []
override func viewDidLoad() {
super.viewDidLoad()
slides = createSlides()
setupSlideScrollView(slides: slides)
pageControl.numberOfPages = slides.count
pageControl.currentPage = 0
view.bringSubviewToFront(pageControl)
}
func createSlides() -> [Any] {
let slide1: UserSlide = Bundle.main.loadNibNamed("UserSlide", owner: self, options: nil)?.first as! UserSlide
//**Error is thrown
slide1.userName.reactive.text <~ userviewmodel.nameTextSignal
slide1.userName.keyboardAppearance = .dark
slide1.userName.delegate = self
let slide2:ZodiacSlide = Bundle.main.loadNibNamed("ZodiacSlide", owner: self, options: nil)?.first as! ZodiacSlide
Ошибка, которую я продолжаю получать: «Неожиданно найден ноль при неявном развертывании необязательного значения» в ссылке UserViewModel I в ViewController в функции createSlides ().
Я в основном пытаюсь создать PageController с двумя представлениями, и у одного из них есть UITextField, который мне нужно связать так, чтобы всякий раз, когда пользователь изменяет значение и перемещается ко второму представлению, данные, отображаемые во втором представлении, работаютна свидание.
Я пробовал:
1) Установка ViewModel на необязательный (?), Но, к сожалению, его необходимо развернуть.
2) Инициализация ViewModel в UserSlideПосмотреть вместо ViewController.ViewModel по-прежнему равен nil.
3) Инициализация UILabel в ViewController и привязка ViewModel таким образом.Тот же результат, ViewModel ноль.
Любые предложения будет принята с благодарностью!:)