方法一:购物车的实现思路
当前页面由2个model控制着,一个是全局的model(控制全选、编辑等当前页面的操作的显示和数据),另一个是每个cell的model(控制每一个cell的状态);
通过判断全局model中的isEdit状态的,如果全局model.isEdit == YES 点击了“编辑”,则将数组中的所有的cell的model的isEdit的值修改为YES,在Cell中,使用Cell的model的isEdit进行判断,如果是“编辑”状态,则显示编辑状态的View;如果是完成状态,则显示完成状态的View;
当用户点击右上角的“编辑”时:
1、当用户点击“编辑”时,for循环修改cell的model数组中isEdit的状态为YES,往用户点击“完成”时,for循环修改cell的model数组中isEdit的状态为NO。
2、将model传入cell,在Cell中,使用Cell的model的isEdit进行判断,如果是“编辑”状态,则显示编辑状态的View;如果是完成状态,则显示完成状态的View;
当用户点击cell的编辑时:
1、当用户点击“编辑”时,for循环修改cell的model数组中当前点击的这行的model.isEdit的状态为YES,往用户点击“完成”时,for循环修改cell的model数组中当前点击的这行的model.isEdit的状态为NO。
2、将model传入cell,在Cell中,使用Cell的model的isEdit进行判断,如果是“编辑”状态,则显示编辑状态的View;如果是完成状态,则显示完成状态的View。
方法二:
点击右上角的“编辑”按钮,实现cell整体改变状态
创建cell的时候添加监听控制器发出的通知
- (instancetype)initWithStyle:(UITableViewCellStyle)style
reuseIdentifier:(NSString*)reuseIdentifier {
if (self= [superinitWithStyle:stylereuseIdentifier:reuseIdentifier]) {
// 设置子视图
[selfsetTheShopCartVChildView];
// 添加监听控制器发出的通知
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(didReceiveNotification:)name:@"changeSatue"object:nil];
}
return self;
}
#pragma mark - 处理接受到的通知
- (void)didReceiveNotification:(NSNotification*)notification {
NSDictionary *dict = notification.userInfo;
NSString *info = dict[@"info"];
if ([info isEqualToString:@"编辑"]) {
[selfdidClickCompleteBtn];
}elseif([infoisEqualToString:@"完成"]) {
[selfdidClickEditBtn];
}
}
- (void)dealloc {
[[NSNotificationCenterdefaultCenter]removeObserver:self];
if (self= [superinitWithStyle:stylereuseIdentifier:reuseIdentifier]) {
// 设置子视图
[selfsetTheShopCartVChildView];
// 添加监听控制器发出的通知
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(didReceiveNotification:)name:@"changeSatue"object:nil];
}
return self;
}
#pragma mark - 处理接受到的通知
- (void)didReceiveNotification:(NSNotification*)notification {
NSDictionary *dict = notification.userInfo;
NSString *info = dict[@"info"];
if ([info isEqualToString:@"编辑"]) {
[selfdidClickCompleteBtn];
}elseif([infoisEqualToString:@"完成"]) {
[selfdidClickEditBtn];
}
}
- (void)dealloc {
[[NSNotificationCenterdefaultCenter]removeObserver:self];
}
//点击编辑按钮
- (void)didClickEditBtn{
self.normalView.hidden=YES;
self.editView.hidden=NO;
}
//点击完成按钮
- (void)didClickCompleteBtn {
self.normalView.hidden=NO;
self.editView.hidden=YES;
- (void)didClickEditBtn{
self.normalView.hidden=YES;
self.editView.hidden=NO;
}
//点击完成按钮
- (void)didClickCompleteBtn {
self.normalView.hidden=NO;
self.editView.hidden=YES;
}
在controller中
//设置导航栏
self.navigationItem.rightBarButtonItem=
[[UIBarButtonItemalloc]initWithTitle:@"编辑"style:UIBarButtonItemStyleDonetarget:selfaction:@selector(editBtAction:)];
#pragma mark -----导航栏的btn点击事件
- (void)editBtAction:(UIBarButtonItem*)buttonItem {
buttonItem.title= [buttonItem.titleisEqualToString:@"编辑"] ? @"完成":@"编辑";
// 发送一个通知
[[NSNotificationCenterdefaultCenter]postNotificationName:@"changeSatue"object:selfuserInfo:@{@"info": buttonItem.title}];
- (void)editBtAction:(UIBarButtonItem*)buttonItem {
buttonItem.title= [buttonItem.titleisEqualToString:@"编辑"] ? @"完成":@"编辑";
// 发送一个通知
[[NSNotificationCenterdefaultCenter]postNotificationName:@"changeSatue"object:selfuserInfo:@{@"info": buttonItem.title}];
}