扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

mvvm濡備綍瀹炵幇鍙屽悜缁戝畾鐨刬os

扬州沐宇科技
2024-05-25 19:01:15
mvvm

鍦╥OS涓紝鍙互閫氳繃浣跨敤KVO锛圞ey-Value Observing锛夋垨鑰匯eactiveCocoa绛夋鏋舵潵瀹炵幇MVVM涓殑鍙屽悜缁戝畾銆備互涓嬫槸浣跨敤ReactiveCocoa瀹炵幇鍙屽悜缁戝畾鐨勪竴涓畝鍗曠ず渚嬶細

  1. 棣栧厛鍦╒iewModel涓畾涔変竴涓睘鎬э紝鐢ㄤ簬瀛樺偍瑕佺粦瀹氱殑鏁版嵁锛?/li>
@interface ViewModel : NSObject

@property (nonatomic, copy) NSString *text;

@end
  1. 鍦╒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>

扫码添加客服微信