2016-10-19 15 views
0

Я пытаюсь реализовать текущее поведение с текстовым полем и кнопкой: 1 - текстовое поле должно быть проверено не в реальном времени, но только после нажатия кнопки на нем должна отображаться метка ошибки для проверки ошибка 2 - если текстовое поле подтверждено, я должен показать uialertcontroller для отмены или продолжения операции.CocoaAction с RxSwift и UIAlertController

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

  let action = CocoaAction { 
      return Observable.create { 
       [weak self] observer -> Disposable in 
       let alertController = self.getAlertController() 
       let ok = UIAlertAction.Action(NSLocalizedString("OK_BUTTON", comment: "OK_BUTTON"), style: .Default) 
       ok.rx_action = CocoaAction { _ in 
        return self!.viewModel!.modify(self?.addressTextFiled.rx_text) 
         .doOnNext({ data in 
          if let data = data 
          { 
           self!.showMessage(data.message) 
          } 
         }) 
         .map { _ in Void() } 
       } 
       let cancelAction = UIAlertAction(title: NSLocalizedString("CANCEL_BUTTON", comment: "CANCEL_BUTTON"), style: .Cancel) { (_) in } 

       alertController.addAction(ok) 
       alertController.addAction(cancelAction) 

       self!.presentViewController(alertController, animated: true, completion: nil) 
       return NopDisposable.instance 
      } 
     } 
     confirmButton.rx_action = action 

Для первого пункта есть ли у вас советы?

Спасибо, что помогли мне!

+0

Можете ли вы дважды проверить, что 'self !.viewModel !.modify' завершается? Если он не завершен, он не освобождает действие, которое будет выполнено снова. –

+0

Что вы имеете в виду? Если он отправляет завершенное событие? – jerrygdm

ответ

0

В ViewModel Наблюдаемого возвращаемый:

func modify() -> Observable<StatusResponse?> 
{ 
    return input!.continueClick 
     .withLatestFrom(requestData!) 
     .flatMap{ [unowned self] (code, mail) -> Observable<StatusResponse?> in 
      return self.provider.request(APIProvider.ModifyRequest(code, "A", mail)) 
       .mapObjectOptional(ModifyStatusResponse.self) 
       .trackActivity(self.activityIndicator) 
     } 
     .retry() 
     .shareReplay(1) 
} 

Что избежать завершений наблюдаемого?