self.stu= [[Studentalloc]init];
// kvc Key - Value - coding
// kvc key - Value - Observer键值观察者
//监控对象里的属性值的变化,只有值发生了变化就会触发方法
//监听属性的值的变化,一定要用设置器,否则监听失效
//注册一个监听
[self.stuaddObserver:selfforKeyPath:@"name"options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNewcontext:@"这是监控的文本"];
self.stu.name=@"张三";
//创建一个button,然后能push到下一页
UIButton*button = [UIButtonbuttonWithType:UIButtonTypeSystem];
button.frame=CGRectMake(100,200,100,50);
[buttonsetTitle:@"下一页"forState:UIControlStateNormal];
[self.viewaddSubview:button];
[buttonaddTarget:selfaction:@selector(click:)forControlEvents:UIControlEventTouchUpInside];
//传值的第四种方法,通知中心
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(Receive:)name:@"test"object:nil];
//通知中心带回到之前设置的方法里
- (void)Receive:(NSNotification*)notification{
NSLog(@"%@",notification.userInfo);
}
第二个页面
#import"SecondViewController.h"
@interfaceSecondViewController()
@end
@implementationSecondViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor= [UIColorwhiteColor];
self.navigationController.navigationBar.translucent=NO;
UIButton*button = [UIButtonbuttonWithType:UIButtonTypeSystem];
button.frame=CGRectMake(100,200,100,50);
[buttonsetTitle:@"返回"forState:UIControlStateNormal];
[self.viewaddSubview:button];
[buttonaddTarget:selfaction:@selector(click:)forControlEvents:UIControlEventTouchUpInside];
}
- (void)click:(UIButton*)button{
[self.navigationControllerpopViewControllerAnimated:YES];
//通过通知中心反方向传值
//通过字典传值
NSDictionary*dic =@{@"1":@"2",@"3":@"4"};
[[NSNotificationCenterdefaultCenter]postNotificationName:@"test"object:niluserInfo:dic];
}
********************************************************************************
UIButton*button = [UIButtonbuttonWithType:UIButtonTypeSystem];
button.frame=CGRectMake(100,200,100,50);
[buttonsetTitle:@"下一页"forState:UIControlStateNormal];
[self.viewaddSubview:button];
[buttonaddTarget:selfaction:@selector(click:)forControlEvents:UIControlEventTouchUpInside];
self.myTextfield= [[UITextFieldalloc]initWithFrame:CGRectMake(100,100,150,50)];
self.myTextfield.layer.borderWidth=1;
self.myTextfield.layer.cornerRadius=10;
[self.viewaddSubview:self.myTextfield];
[_myTextfieldrelease];
//通过中心监听输入框的内容
//第一个参数:添加监听者的对象,一般都是当前文件的对象,也就是self
//第二个参数:监听触发的方法
//第三个参数:监听的名,如果对textfield进行监听,UITextfield提供了专门的常量字符串.127行
//第四个参数:把要监听的对象放到最后一位,如果用于传值,则是nil
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(changeValue:)name:UITextFieldTextDidChangeNotificationobject:self.myTextfield];
- (void)changeValue:(NSNotification*)notification{
NSLog(@"%@",self.myTextfield.text);
//这个是用来判断电话号码的正确表达式,正则表达式通过自己的语法规则可以用一串表达式判断身份证号等信息,如果需要,就百度
NSString*str =@"^((13[0-9])|(147)|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
//用谓词来判断当前输入的文本框内容和正则表达式格式是否吻合
NSPredicate*cate = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",str];
//然后进行判断,返回一个BOOL类型的结果
BOOLresult = [cateevaluateWithObject:self.myTextfield.text];
if(result) {
NSLog(@"符合条件");
}else{
NSLog(@"不符合条件");
}
}
- (void)click:(UIButton*)button{
// SecondViewController *secVC = [[SecondViewController alloc]init];
// [self.navigationController pushViewController:secVC animated:YES];
// [secVC release];
UIAlertController*alertVC = [UIAlertControlleralertControllerWithTitle:@"提示"message:@"张阳阳"preferredStyle:UIAlertControllerStyleAlert];
[selfpresentViewController:alertVCanimated:YEScompletion:nil];
//给它添加一个textField
[alertVCaddTextFieldWithConfigurationHandler:^(UITextField*textField) {
textField.placeholder=@"请输入内容";
//把监听内容写在textField添加的方法里
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(changeText:)name:UITextFieldTextDidChangeNotificationobject:textField];
}];
//添加两个按钮
UIAlertAction*sureAction = [UIAlertActionactionWithTitle:@"确认"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction*action) {
//在里面写点击方法
UITextField*textField = alertVC.textFields[0];
NSLog(@"%@",textField.text);
}];
[alertVCaddAction:sureAction];
//设置按钮是用不了的
sureAction.enabled=NO;
}
- (void)changeText:(NSNotification*)notification{
UIAlertController*alertVC = (UIAlertController*)self.presentedViewController;
UITextField*textField = alertVC.textFields[0];
UIAlertAction*action = alertVC.actions[0];
action.enabled= textField.text.length>5;
}
- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context{
//只要监听的属性内容发生了变化,就会马上触发这个方法
NSLog(@"%@",change);
}
网友评论