mvvm濡備綍瀹炵幇鍙屽悜缁戝畾鐨刬os
鍦╥OS涓紝鍙互閫氳繃浣跨敤KVO锛圞ey-Value Observing锛夋垨鑰匯eactiveCocoa绛夋鏋舵潵瀹炵幇MVVM涓殑鍙屽悜缁戝畾銆備互涓嬫槸浣跨敤ReactiveCocoa瀹炵幇鍙屽悜缁戝畾鐨勪竴涓畝鍗曠ず渚嬶細
- 棣栧厛鍦╒iewModel涓畾涔変竴涓睘鎬э紝鐢ㄤ簬瀛樺偍瑕佺粦瀹氱殑鏁版嵁锛?/li>
@interface ViewModel : NSObject
@property (nonatomic, copy) NSString *text;
@end
- 鍦╒iewController涓紩鍏eactiveCocoa锛屽苟鍦╲iewDidLoad鏂规硶涓繘琛屽弻鍚戠粦瀹氾細
#import <ReactiveCocoa/ReactiveCocoa.h>
@interface ViewController ()
@property (nonatomic, strong) ViewModel *viewModel;
@property (nonatomic, strong) UITextField *textField;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 100, 200, 30)];
[self.view addSubview:self.textField];
self.viewModel = [[ViewModel alloc] init];
// 鍙屽悜缁戝畾
RACChannelTo(self.viewModel, text) = RACChannelTo(self.textField, text);
[[RACObserve(self.viewModel, text) skip:1] subscribeNext:^(NSString *text) {
// 澶勭悊鏁版嵁鍙樺寲
NSLog(@"Text changed: %@", text);
}];
}
鍦ㄤ笂闈㈢殑绀轰緥涓紝閫氳繃RACChannelTo鏂规硶灏哣iewModel涓殑text灞炴€т笌textField鐨則ext灞炴€ц繘琛屽弻鍚戠粦瀹氾紝褰撳叾涓竴涓睘鎬х殑鍊煎彉鍖栨椂锛屽彟涓€涓睘鎬т篃浼氱浉搴斿湴鏇存柊銆傚悓鏃讹紝閫氳繃RACObserve鏂规硶鐩戝惉ViewModel涓璽ext灞炴€х殑鍙樺寲锛屼粠鑰屽彲浠ュ湪鏁版嵁鍙樺寲鏃惰繘琛岀浉搴旂殑澶勭悊銆?/p>
閫氳繃杩欑鏂瑰紡锛屽彲浠ュ疄鐜癕VVM涓殑鍙屽悜缁戝畾锛屽湪ViewModel鍜孷iew涔嬮棿瀹炵幇鏁版嵁鐨勫悓姝ユ洿鏂般€?/p>