1.如何得到更优雅的代码:
先不展开,要是展开得讲个5.6小时。上一个例子:http://www.cocoachina.com/ios/20150123/10994.html
这个例子即使抛开全部的RAC部分的代码都是十分优雅的。
提几点:
1).需要足够熟悉的API:
[self.usernameTextField addTarget:self action:@selector(usernameTextFieldChanged) forControlEvents:UIControlEventEditingChanged];
[self.passwordTextField addTarget:self action:@selector(passwordTextFieldChanged) forControlEvents:UIControlEventEditingChanged];
2).减少if判断,利用三元句柄,甚至回调Block:
self.usernameTextField.backgroundColor = self.usernameIsValid ? [UIColor clearColor] : [UIColor yellowColor];
self.passwordTextField.backgroundColor = self.passwordIsValid ? [UIColor clearColor] : [UIColor yellowColor];
- (void)signInWithUsername:(NSString *)username password:(NSString *)password complete:(RWSignInResponse)completeBlock;
3).简洁的判断:
- (BOOL)isValidUsername:(NSString *)username {
return username.length > 3;
}
4).从思想出发,完完全全遵从的是setNeedDisplay 这种调起的代码结构:
- (void)updateUIState {
self.usernameTextField.backgroundColor = self.usernameIsValid ? [UIColor clearColor] : [UIColor yellowColor];
self.passwordTextField.backgroundColor = self.passwordIsValid ? [UIColor clearColor] : [UIColor yellowColor];
self.signInButton.enabled = self.usernameIsValid && self.passwordIsValid;
}
- (void)usernameTextFieldChanged {
self.usernameIsValid = [self isValidUsername:self.usernameTextField.text];
[self updateUIState];
}