iOS通知使用小结

最近在项目开发中遇到了一个问题,首页底部菜单和底部子菜单的互动。需求是这样的,编辑状态下点击红色删除按钮,首页底部菜单移除该项,子菜单中对应项选中状态设置为未选中,典型的一对多方式。刚开始的方案是想通过代理或者block实现,结果发现只能一次修改一个子页面,无法全部同步,后改用通知方式,得以完美实现。代码如下:

image

//1、在父页面发通知,告知子页面某一项被移除

-(void)btnDeleteAction:(CCHighSeasPoolButton *)sender{

CCHighSeasPoolManager *seas=[CCHighSeasPoolManager sharedManager];

CCMoreListModel *model=[seas.dataList objectAtIndex:sender.btnRow];

//删除首页菜单项,在所有子页面接收通知,将该项设置为未选中

[[NSNotificationCenter defaultCenter] postNotificationName:@"CCNewMoreMenuDelete" object:model];

//刷新首页底部菜单个数

self.itemAddBlock(model);

[seas.dataList removeObjectAtIndex:sender.btnRow];

//刷新当前列表

[self.collectionView reloadData];

}

//2、在子页面接收通知,操作成功,刷新页面

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(headerRefresh:) name:@"CCNewMoreMenuDelete" object:nil];
  • (void)headerRefresh:(NSNotification *)notification{

    CCMoreListModel *infoDict = notification.object;

    //首页底部菜单移除某一项,在子菜单中将该项的选中状态设置为未选中

    for (CCHighSeasPoolReturnItemModel *model in self.data[0].items) {

      if ([model.itemtitle isEqualToString:infoDict.tab_name]) {
    
          [model setIsselect:0];
    
      }
    

    }

    //刷新子菜单

    [self.collectionView reloadData];

}

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

相关阅读更多精彩内容

友情链接更多精彩内容