代理
代理:又叫委托 自己不能去办的事,委托给别人去办
UIAlertView、UITextField都是用了代理
一、写代理的步骤:
1、需要帮忙的人
1)声明代理里面的协议方法(@protocol)
2)声明协议的属性
3)什么时候需要触发这个代理方法
4)通过协议的属性调用代理方法(委托)
2、帮忙的人做的事
5)导入协议
6)在初始化有代理方法的对象的地方(答应帮忙)
7)写上代理方法,等待被执行(具体帮忙的内容)
二、具体实现:
1、声明代理方法
@protocol NextDelegate <NSObject>
//是否强制执行
//@optional
- (void)toLoginWithName:(NSString *)name;
@end
注:不要在@interface里面声明代理方法
2、声明代理的属性(可以通过这个属性找到代理方法)
@property (nonatomic, assign) id<NextDelegate> delegate;
注:
1)声明代理的属性用assign 分配到栈里面
2)id<代理名> :代理的类型
3、什么时候需要触发这个代理方法
- (void)toRigether {
// 点击注册 注册成功的时候 触发代理方法
[self.navigationController popToRootViewControllerAnimated:YES];
4、通过协议的属性调用代理方法(委托)
[self.delegate toLoginWithName:@"小明"];
}
5、导入协议
@interface ViewController () <NextDelegate, UIActionSheetDelegate>
6、在初始化有代理方法的对象的地方(答应帮忙)
next.delegate = self;
7、写上代理方法,等待被执行(具体帮忙的内容)
- (void)toLoginWithName:(NSString *)name {
NSLog(@"%@登陆成功", name);
}
三、补充小知识
1、UIActionSheet
UIActionSheet:弹出框、选择按钮
具体实现:
UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"选择商品" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"此商品已售完" otherButtonTitles:@"最新商品", nil];
[actionSheet showInView:self.view];
2、等待视图
具体实现:
indicatorView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicatorView.color = [UIColor purpleColor];
// 设置等待视图的中心点
indicatorView.center = self.view.center;
[indicatorView startAnimating];
[self.view addSubview:indicatorView];
3、设置用户配置信息(用户状态)保存到本地 NSUserDefaults
1)初始化
NSUserDefaults *userDefaults1 = [NSUserDefaults standardUserDefaults];
2)添加字符串
[userDefaults1 setObject:@"..." forKey:@“dian"];
3)添加数字
[userDefaults1 setInteger:10 forKey:@"age"];
4)防止退出运用程序之后数据消失
[userDefaults1 synchronize];
5)取值(key值必须一致)
NSString *dian = [userDefaults1 objectForKey:@"dian"];
NSInteger age = [userDefaults1 integerForKey:@"age"];