| // | |
| // NSObjectRACAppKitBindingsSpec.m | |
| // ReactiveCocoa | |
| // | |
| // Created by Justin Spahr-Summers on 2013-07-01. | |
| // Copyright (c) 2013 GitHub, Inc. All rights reserved. | |
| // | |
| #import "RACChannelExamples.h" | |
| #import "EXTKeyPathCoding.h" | |
| #import "NSObject+RACAppKitBindings.h" | |
| SpecBegin(NSObjectRACAppKitBindings) | |
| itShouldBehaveLike(RACViewChannelExamples, ^{ | |
| return @{ | |
| RACViewChannelExampleCreateViewBlock: ^{ | |
| return [[NSSlider alloc] initWithFrame:NSZeroRect]; | |
| }, | |
| RACViewChannelExampleCreateTerminalBlock: ^(NSSlider *view) { | |
| return [view rac_channelToBinding:NSValueBinding]; | |
| }, | |
| RACViewChannelExampleKeyPath: @keypath(NSSlider.new, objectValue), | |
| RACViewChannelExampleSetViewValueBlock: ^(NSSlider *view, NSNumber *value) { | |
| view.objectValue = value; | |
| // Bindings don't actually trigger from programmatic modification. Do it | |
| // manually. | |
| NSDictionary *bindingInfo = [view infoForBinding:NSValueBinding]; | |
| [bindingInfo[NSObservedObjectKey] setValue:value forKeyPath:bindingInfo[NSObservedKeyPathKey]]; | |
| } | |
| }; | |
| }); | |
| SpecEnd |