博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS不得姐项目--TabBar的重复点击实现当前模块刷新;状态栏点击实现当前模块回滚到最顶部...
阅读量:6330 次
发布时间:2019-06-22

本文共 1916 字,大约阅读时间需要 6 分钟。

一.实现功能:重复点击tabBar,刷新当前TableView,其余不受影响

  <1>实现思路:

  • 错误的方法:

  TabBar成为自己的代理,监听自己的点击--这种方法是不可取的,如果外面设置了代理会覆盖里面的

  • 正确的方法:
    • 既然没有合适的控制器来监听TabBar的点击,就让AppDelegate来做代理,接收到点击事件后,通过通知中心发送通知. -- 注意:发送通知,userInfo将要传递的字典参数,项目里面就一个TabBarVC,可以通过它来获取当前点击的控制器,所以没有传递参数.
    • 哪个控制器需要,就监听发出的通知. -- 发出的通知字符串常量,最好在外界定义好 -- 项目中重复点击需要刷新对应的帖子控制器,所以在帖子控制器中监听发出的通知,接收到通知后直接条用刷新的方法. --注意:记录上次选中的控制器,判断本次点击是否与上次一样,并且为显示在当前的控制器

二.状态栏点击,让显示在当前的TableView回到顶部. -- 实现思路:在APPDelegate中,程序启动之前创建一个窗口,高度20,添加点击的手势,手势事件中递归遍历当前窗口所有子控件,满足是UIScrollView或其子类的空间并且显示在当前,让该scrollView回到顶部.

  • 注意,自从iOS9之后直接添加窗口,没有给窗口添加跟控制器会报错.添加了跟控制器后,UI界面会混乱.问题暂未解决!!!!!!!!!!!!!!!!!!!
  • 问题找到解决方案:在添加topWindow的时候,延迟一段时间再将其添加顶部,我有种蛋蛋的忧伤啊!!
1 #import "XMGTopWindow.h" 2  3 @implementation XMGTopWindow 4  5 static UIWindow *window_; 6  7 + (void)initialize 8 { 9     window_ = [[UIWindow alloc] init];10     window_.frame = CGRectMake(0, 0, XMGScreenW, 20);11     window_.windowLevel = UIWindowLevelAlert;12     [window_ addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(windowClick)]];13 }14 15 + (void)show16 {17     window_.hidden = NO;18 }19 20 + (void)hide21 {22     window_.hidden = YES;23 }24 25 /**26  * 监听窗口点击27  */28 + (void)windowClick29 {30     UIWindow *window = [UIApplication sharedApplication].keyWindow;31     [self searchScrollViewInView:window];32 }33 34 + (void)searchScrollViewInView:(UIView *)superview35 {36     for (UIScrollView *subview in superview.subviews) {37         // 如果是scrollview, 滚动最顶部38         if ([subview isKindOfClass:[UIScrollView class]] && subview.isShowingOnKeyWindow) {39             CGPoint offset = subview.contentOffset;40             offset.y = - subview.contentInset.top;41             [subview setContentOffset:offset animated:YES];42         }43         44         // 继续查找子控件45         [self searchScrollViewInView:subview];46     }47 }48 @end
View Code

 

转载于:https://www.cnblogs.com/gchlcc/p/5542383.html

你可能感兴趣的文章
神经网络(NN)+反向传播算法(Backpropagation/BP)+交叉熵+softmax原理分析
查看>>
vsftpd 配置:chroot_local_user与chroot_list_enable详解
查看>>
Fedora17初始配置
查看>>
虚拟机性能监控与故障处理工具
查看>>
为Drupal7.22添加富编辑器 on Ubuntu 12.04
查看>>
Angular企业级开发(2)-搭建Angular开发环境
查看>>
web.xml 里context-param 、listener、 filter、servlet 加载顺序
查看>>
局域网映射公网IP
查看>>
图的割点、桥与双连通分支
查看>>
Python学习笔记(十一)
查看>>
C++的64位整数
查看>>
记最难忘的一件事 等笑话一箩筐
查看>>
arcgis api for JavaScript _跨域请求
查看>>
搜索引擎高效搜索
查看>>
f5时间设置
查看>>
f5创建VS
查看>>
关于图片上传的个人摘要
查看>>
Cesium学习笔记(九):导入3D模型(obj转gltf)
查看>>
最大似然估计(Maximum likelihood estimation)
查看>>
Python基础学习之 函数
查看>>