[英]Counting beans with ReactiveCocoa 4 and an NSButton
我有以下幾點:
ViewController
和ViewModel
ViewController
view
的一個按鈕nsButtonMorePlease:NSButton
view
中的文本框nsTextView:NSTextView
也是如此 我想要以下行為:
nsTextView
文本框中nsTextView
nsButtonMorePlease
,計數將增加1
,更新的計數將反映在nsTextView
我想確保:
ReactiveCocoa 4
(這就是重點) numberOfBeans: MutableProperty<Int>
從0
開始 numberOfBeans
的MutableProperty
,以在文本視圖中對其做出響應,所有這些都沒有副作用。 這就是我所擁有的。 合理的警告:我認為這接近工作或編譯。 但是我確實感覺好像我想使用combineLatest
, collect
, reduce
。只是迷失了要做什么。 我確實覺得這使事情變得很困難。
class CandyViewModel {
private let racPropertyBeansCount: MutableProperty<Int> = MutableProperty<Int>(0)
lazy var racActionIncrementBeansCount: Action<AnyObject?, Int, NoError> = {
return Action { _ in SignalProducer<Int, NoError>(value: 1)
}
}()
var racCocoaIncrementBeansAction: CocoaAction
init() {
racCocoaIncrementBeansAction = CocoaAction.init(racActionIncrementBeansCount, input: "")
// ???
var sig = racPropertyBeansCount.producer.combineLatestWith(racActionIncrementBeansCount.)
}
}
class CandyView: NSViewController {
@IBOutlet private var guiButtonMoreCandy: NSButton!
@IBOutlet private var guiTextViewCandyCt: NSTextView!
}
class CandyViewModel {
let racPropertyBeansCount = MutableProperty<Int>(0)
let racActionIncrementBeansCount = Action<(), Int, NoError>{ _ in SignalProducer(value: 1) }
init() {
// reduce the value from the action to the mutableproperty
racPropertyBeansCount <~ racActionIncrementBeansCount.values.reduce(racPropertyBeansCount.value) { $0 + $1 }
}
}
class CandyView: NSViewController {
// define outlets
let viewModel = CandyViewModel()
func bindObservers() {
// bind the Action to the button
guiButtonMoreCandy.addTarget(viewModel.racActionIncrementBeansCount.unsafeCocoaAction, action: CocoaAction.selector, forControlEvents: .TouchUpInside)
// observe the producer of the mutableproperty
viewModel.racPropertyBeansCount.producer.startWithNext {
self.guiTextViewCandyCt.text = "\($0)"
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.