zoukankan      html  css  js  c++  java
  • iOS通知使用小结

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

    //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];

    }

  • 相关阅读:
    如何用StatSVN统计SVN服务器某项目的代码量
    探秘JVM的底层奥秘
    SpingMVC流程图
    NioCopy文件
    我的angularjs源码学习之旅3——脏检测与数据双向绑定
    我的angularjs源码学习之旅2——依赖注入
    我的angularjs源码学习之旅1——初识angularjs
    IE兼容性问题汇总【持续更新中】
    nodejs学习笔记四——express-session
    我理解的this
  • 原文地址:https://www.cnblogs.com/bigant9527/p/15464852.html
Copyright © 2011-2022 走看看