MVVM双向绑定

@implementation MRCLoginViewController

- (void)bindViewModel {

[super bindViewModel];
@weakify(self)

[RACObserve(self.viewModel, avatarURL) subscribeNext:^(NSURL *avatarURL) {

@strongify(self)
[self.avatarButton sd_setImageWithURL:avatarURL forState:UIControlStateNormal placeholderImage:[UIImage imageNamed:@"default-avatar"]];

}];
RAC(self.viewModel, username)  = self.usernameTextField.rac_textSignal;

RAC(self.viewModel, password)  = self.passwordTextField.rac_textSignal;

RAC(self.loginButton, enabled) = self.viewModel.validLoginSignal;

[[self.loginButton

rac_signalForControlEvents:UIControlEventTouchUpInside]

subscribeNext:^(id x) {
@strongify(self)

[self.viewModel.loginCommand execute:nil];

}];

[[self.browserLoginButton

rac_signalForControlEvents:UIControlEventTouchUpInside]

subscribeNext:^(id x) {

@strongify(self)

NSString *message = [NSString stringWithFormat:@"“%@” wants to open “Safari”", MRC_APP_NAME];

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:message                                                                                                    preferredStyle:UIAlertControllerStyleAlert];

[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:NULL]];

[alertController addAction:[UIAlertAction actionWithTitle:@"Open" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {

@strongify(self)

[self.viewModel.browserLoginCommand execute:nil];

}]];

[self presentViewController:alertController animated:YES completion:NULL];

}];

}

@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容