设置由UIImageView.bnd_image绑定到Observable <uiimage>对象的UIImageView.image

时间:2016-02-23 01:05:54

标签: ios swift data-binding uiimageview uiimage

我正在使用Swift Bond进行数据绑定。我正在尝试将ViewController中的UIImageView图像变量绑定到ViewModel中的Observable变量,以观察图像的设置时间。完成以下方法后,当我从UIImageView设置image&#39; ViewController时,Observable变量的observeNew()方法不叫。我希望它会被调用。我有一些其他的数据绑定,他们工作。我在代码段中包含了一个。

的ViewController

class PostViewController: UIImagePickerControllerDelegate {
  var viewModel: PostViewModel!
  var caption: UITextField!
  var postImageView: UIImageView!

  init() {
    viewModel = PostViewModel()
    super.init(nibName: nil, bundle: nil)
  }

  override func viewDidLoad() { 
    -- view setup omitted --
    view.addSubview(caption)
    view.addSubview(postImageView)

    createBindings()
  }

  private func createBindings() {
   -- other data bindings omitted --
   caption.bnd_text.bindTo(viewModel.caption)
   postImageView.bnd_image.bindTo(viewModel.postPhoto)
  }

  func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
    // I would expect setting the image here would trigger the binding and observeNew() would be called
    postImageView.image = image
    picker.dismissViewControllerAnimated(true, completion: nil)
  }
}

视图模型

class PostViewModel {
  let caption   = Observable<String?>("")
  let postPhoto = Observable<UIImage?>(nil)

  init() {
    caption.observeNew({ text in
      // Prints text when caption: UITextField is edited
      print(text)
    })

    postPhoto.observeNew({ image in
      // Doesn't print statement when postImageView: UIImageView is set 
      print("Post received a new image")
    })
  }
}

我已经尝试了很多不同的方法来观察UIImageView的任何变化,但没有观察到:

  • 将绑定转换为viewModel.postPhoto.bindTo(postImageView.bnd_image)并更改viewModel.postPhoto的值
  • 双向尝试viewModel.postPhoto.bidirectionalBindTo(postImageView.bnd_image)

我已经阅读Bond Demo app他们将viewModel用于UIImageView绑定

我已经检查了Unit tests他们在哪里测试UIImageView绑定

我已经阅读了一些教程,包括this one

我还在UIImageView对象image变量(例如bnd_backgroundColor)上尝试了其他数据绑定,并在动作时更改背景颜色以查看是否Observable被称为,但它不是,所以我一定做错了,但我不确定它是什么......

我只是想知道UIImageView的图像何时发生变化。

0 个答案:

没有答案