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];
}
iOS通知使用小结的更多相关文章
- iOS通知的整理笔记
iOS通知用于高耦合界面的传值确实方便快捷. 需要实现模态弹出的视图控制器上,有一个视图控制器可以导航.这必定要将这个视图控制器的导航视图控制器naVC.view添加到模态弹出的视图控制器presen ...
- iOS 通知的变化ios9-10,新功能展示
二.新功能展示 1 使用 /iOS通知新功能玩法 2. 全面 iOS10里的通知与推送详情 一.变化 四.Notification(通知) 自从Notification被引入之后,苹果就不断的 ...
- iOS通知中心
iOS通知中心 它是iOS程序内部的一种消息广播机制,通过它,可以实现无引用关系的对象之间的通信.通知中心他是基于观察者模式,它只能进行程序内部通信,不能跨应用程序进程通信. 当通知中心接受到消息后会 ...
- delphi IOS 通知 TNotification
delphi IOS 通知 TNotification http://blogs.embarcadero.com/ao/2013/05/01/39450 TNotification http://d ...
- iOS 通知观察者的被调函数不一定运行在主线程
Tony in iOS | 08/08/2013 iOS 通知观察者的被调函数不一定运行在主线程 今天修复Bug时候发现的一个小细节,记录下. 问题描述 事情是这样的:我在A视图(UITableVie ...
- iOS 通知扩展插件
iOS 通知扩展插件 目录 iOS 通知扩展插件 Notification Service Extension 新建一个target 代码实现 注意事项 UINotificationConentExt ...
- iOS推送小结(证书的生成、客户端的开发、服务端的开发)
1.推送过程简介 1.1.App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远程推送的申请 ...
- iOS通知中心升级 -可设置按优先级执行block
简单介绍下,这是需求驱动中发现iOS的NotificationCenter有很多功能无法实现,于是对其进行了一层包装.相当于手动管理观察者栈和监听者期望执行的事件,因此可以为其添加了很多新增的功能,将 ...
- iOS通知
链接: IOS之推送通知(本地推送和远程推送) iOS 10推送通知开发 活久见的重构 - iOS 10 UserNotifications 框架解析 iOS10全新推送功能的实现
- iOS通知的使用
注册:[[NSNotificationCenter defaultCenter] postNotificationName:@"changeColor" object:self]; ...
随机推荐
- 【Vue】Re13 CLI(Command Line Interface)
一.What is CLI Command Line Interface 命令行接口 但是说是命令行界面,在官方又被称为脚手架 一个单词三个意思,所以令人困惑 但是根据实际意义用途来说就是帮助开发者更 ...
- Ubuntu18.04 环境下 解决VScode中空格长度减小的问题
问题: Ubuntu下安装vscode后发现空格特别小,只有正常空格的一半大小 ======================================================= ...
- (续) MindSpore 如何实现一个线性回归 —— Demo示例
前文: https://www.cnblogs.com/devilmaycry812839668/p/14975860.html 前文中我们使用自己编写的损失函数和单步梯度求导来实现算法,这里是作为扩 ...
- 简单易懂的BFS
最近学习BFS,看到许多教程都用C++内置的queue,但其实还有更简单的方法. 先了解概念:BFS与DFS不同,举个例子: 我们来用DFS遍历这棵树:A.B.D.E.G.C.F 但我们用BFS遍历这 ...
- 白鲸开源 DataOps 平台加速数据分析和大模型构建
作者 | 李晨 编辑 | Debra Chen 数据准备对于推动有效的自助式分析和数据科学实践至关重要.如今,企业大都知道基于数据的决策是成功数字化转型的关键,但要做出有效的决策,只有可信的数据才能提 ...
- CUDA常见编译器配置问题一览
CUDA常见编译器配置问题一览 关注TechLead,复旦博士,分享云服务领域全维度开发技术.拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,复旦机器人智能实验室成员,国家级大学生赛事评审 ...
- vue3的defineAsyncComponent是如何实现异步组件的呢?
前言 在上一篇 给我5分钟,保证教会你在vue3中动态加载远程组件文章中,我们通过defineAsyncComponent实现了动态加载远程组件.这篇文章我们将通过debug源码的方式来带你搞清楚de ...
- RabbitMq高级特性之TTL 存活时间/过期时间 通俗易懂 超详细 【内含案例】
RabbitMq高级特性之TTL 存活时间/过期时间 介绍 RabbitMQ支持消息的过期时间, 在消息发送时可以进行指定 RabbitMQ支持队列的过期时间, 从消息入队列开始计算, 只要超过了队列 ...
- 瑞芯微 | 如何固定以太口地址为指定ip?ifplugd妙用
rxw的RK3568的evb1公板,有2个以太口, 默认UI界面只能配置eth0,无法配置eth1, 实际应用中,有时需要一旦有网线插入,就需要该地址设置为指定IP地址. 本文介绍2个最简单的方法实现 ...
- Electron初体验
为什么使用electron 最近准备开发一个国产麒麟系统上的桌面程序,主要完成Linux命令的可视化,而electron作为目前最活跃的跨平台桌面应用程序的框架之一,它可以使用网页技术(如 HTML. ...