#swift #mvvm
Вопрос:
Я хочу проверить, пусто ли мое поле UITextField, чтобы я мог показать сообщение об ошибке и передать имя пользователя другому контроллеру. Но данные не передаются, когда я ввожу имя пользователя, вместо этого они отображаются на контроллере оповещения. Я новичок в MVVM, поэтому не понимаю, как написать логику в ViewModel.
Это моя модель просмотра
protocol ViewModelType { associatedtype Input associatedtype Output func transform(input: Input) -gt; Output } class SearchViewModel: ViewModelType { struct Input { var searchUsername: Binderlt;Stringgt; } struct Output { var errorMessage: Binderlt;Stringgt; var username: Binderlt;Stringgt; } func transform(input: Input) -gt; Output { let username = input.searchUsername.value var errorMessage = input.searchUsername.value if errorMessage.isEmpty { errorMessage = "Please enter a username. We need to know who to look for" } return Output(errorMessage: Binderlt;Stringgt;(errorMessage), username: Binderlt;Stringgt;(username)) } }
Это моя модель представления в SearchController
var viewModel = SearchViewModel() @IBAction func searchTapped(_ sender: UIButton) { let input = SearchViewModel.Input(searchUsername: Binderlt;Stringgt;(searchTextField.text ?? "")) let output = viewModel.transform(input: input) output.errorMessage.bind { message in let ac = UIAlertController(title: "Error", message: message, preferredStyle: .alert) ac.addAction(UIAlertAction(title: "Dismiss", style: .default, handler: nil)) self.present(ac, animated: true) } output.username.bind { username in let followerListVC: FollowersListViewController = FollowersListViewController.loadFromStoryboard() followerListVC.username = username self.navigationController?.pushViewController(followerListVC, animated: true) } }