1.监听按钮点击
 
2.判断是否是点击的同一个按钮(记录上次点击的按钮)
 
3.当重复点击相同按钮时,需要获取当前按钮对应控制器刷新界面
     3.1 判断是否重复点击按钮,代码写在哪里?
          点击标题按钮,属于精华控制器的事情,所以找到精华控制器.写在点击按钮方法里面
 
     3.2怎么拿到按钮对应的控制器?
          通过当前按钮的tag值,从精华控制器的子控制器数组中去
     
     3.3怎么让对应的控制器刷新界面?
          在对应的控制器里面提供刷新方法,这样每个控制器都要写,太麻烦
          之前我们抽取了父类,只需要在父类中提供一个刷新界面方法即可,只需要写一次
 
     3.4刷新界面用什么方法?
          reloadData,这个方法不太好,没有下拉刷新的效果
          之前我们在控制器中提供了下拉刷新的方法,调用下拉刷新方法即可
 
     3.5下拉刷新用MJ框架集成的,怎么调用?

     // 开始下拉刷新,触发下拉刷新,调用下拉刷新方法
[self.tableView.mj_header beginRefreshing];
 
     3.6当控制器第一次被加载的时候,也需要刷新的效果,
           我们在viewDidLoad里面手动调用下 下拉刷新就可以了    
 
二.重复点击tabBar按钮加载数据
1.监听按钮点击
     1.1系统的按钮怎么监听点击?
          设置代理,自己成为自己的代理
          当某些方法必须自己成为自己代理才能实现,那就自己成为自己的代理
 
     1.2怎么监听?

 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
 
2.判断是否点击了同一个TabBar按钮(记录上次点击的按钮(控制器))
     2.1定义属性记录上次选中按钮(控制器)
     2.2让第0个按钮(控制器)成为选中按钮(默认会选中第0个按钮)
 
3.获取当前界面显示的控制器,刷新界面
     3.1 tabBarController不能直接获取主题控制器,怎么办?
     
     3.2 采用通知,重复点击tabBar上按钮发出通知,所有主题控制器接收通知
     
     3.3 在精华和新帖的父控制器(主题控制器)接收通知
          点击子类时,self指向子类,也就是子类接收通知
 
     3.4 当所有的子类控制器都被点击时,在点击TabBar按钮,所有的子控制器都接收通知,都会刷新
 
     3.5 怎么做到,只让一个控制器刷新界面?
          接收通知的主题控制器,只有显示在屏幕(界面)上的控制器才需要刷新
 
     3.6 如何判断控制器是否显示在屏幕(界面)上
          通过window属性,如果控制器的view有window属性,表示当前控制器在窗口上显示,没有就没显示。
 
        // 在屏幕上控制器的view才需要刷新界面
if (self.view.window) {
// 开始下拉刷新,触发下拉刷新,调用下拉刷新方法
[self.tableView.mj_header beginRefreshing];
}
 
三.点击状态栏回到顶部
 
1.UIScrollView有个特性,点击状态栏,会自动回到顶部
 
2.为什么会有这个特性?
     因为 scrollsToTop这个属性, 苹果对这个属性有介绍  (默认为YES)
     介绍:在当前显示的所有view中,如果多个scrollView的 scrollsToTop属性都打开,就没有效果了
               整个屏幕上只能一个scrollView打开scrollsToTop,才有用
 
3.怎么让我们的主题控制器也拥有: 点击状态栏,自动回到顶部?
     只让主题控制器的scrollsToTop = YES 即可
     在精华和新帖的父控制器中,设置collectionView 和 scrollView(标题按钮栏) 的scrollsToTop属性为NO

重复点击主界面(TabBar)按钮刷新界面--点击状态栏回到顶部的更多相关文章

  1. iOS点击状态栏回到顶部底层实现原理

    在iOS开发中,苹果其实已经帮你实现了点击状态栏回到顶部这个功能,但我们在开发中会遇到点击不能回到顶部.其实这都和 ScrollView中的一个属性scrollsToTop有关,我们先看看苹果关于这个 ...

  2. UITableView 或 UIScrollView 点击状态栏列表回到顶部

    整理来自互联网- 这是tableView继承的scrollView的一个属性 scrollsToTop. 官方说明是这样的: // When the user taps the status bar, ...

  3. Angular 2/4/5+ 重复点击菜单刷新界面

    记一下,网上没找到方法 自己搞了好久  通过跳转到别的界面在跳回来的方式进行实现             //再次点击刷新界面       if (this.router.url == item.ur ...

  4. WPF点击不同界面上的按钮实现界面切换

    原文:WPF点击不同界面上的按钮实现界面切换 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_29844879/article/details/ ...

  5. ListView中响应item的点击事件并且刷新界面

    ---恢复内容开始--- 最近在在实现listview功能中遇到了这个问题: 点击事件写在了adapter的item中,不知道如何在listview的点击事件中更新数据的显示: 总结:1.要使用not ...

  6. VC/Wince 实现仿Win8 Metro风格界面3——按钮移动交换、删除、添加快捷方式(附效果图)

    上一篇文章写了如何进行页面滑动切换,今天我讲一下如何实现两个按钮拖动交换位置,包括同一个页面按钮交换或者两个页面之间的按钮交换.另外就是如何拖动删除界面上的快捷方式.按钮交换和拖动删除,这两个功能基本 ...

  7. Dynamics CRM 客户端程序开发:在实体的列表界面添加按钮

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复114或者20140312可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 如果没有安装Ribbon Wor ...

  8. C#子线程刷新界面并关闭窗体

    目的:要循环刷新界面上的控件,同时不影响用户操作.循环结束后关闭窗体. 步骤:先创建一个窗体,窗体中拖入一个lable控件(label1),一个button控件(button1) 代码窗口输入: // ...

  9. easyui中Tab的tools按钮刷新当前tab

    easyui中Tab的tools按钮刷新当前tab 点击刷新按钮,刷新当前Tab选项卡. $('#index_tabs').tabs({ fit : true, border : false, too ...

随机推荐

  1. 彻底删除oracle的方法

    环境:Windows 2000+ORACLE,其他环境类似 假设ORACLE安装路径为:D:\ORACLE ,其他路径操作类似 方法: 1.开始->设置->控制面板->管理工具-&g ...

  2. HQL之多表查询(一对多和多对多)

    一.一对多 以班级Classes和学生Student为例:   回忆sql语句: //内链接,两种方式效果一样,查询的是两边都有的数据 SELECT c.*,s.* FROM classes c,st ...

  3. Android之Fragment学习笔记①

    Android Fragment完全解析,关于碎片你所需知道的一切 一. 什么是FragmentFragment(碎片)就是小型的Activity,它是在Android3.0时出现的.Fragment ...

  4. 冒泡排序与插入排序(C#实现)

    本人应届生面试,发现被问了2次关于排序的算法.当时竟然没写出来!!!好吧,可能是用库函数多了,很久没搞算法了,在纸上写没感觉吧. 今天花了1个多小时写了下冒泡排序与插入排序(C#实现),并写了注释和小 ...

  5. 使用VC2005编译真正的静态Qt程序

    首先,你应该该知道什么叫静态引用编译.什么叫动态引用编译.我这里只是简单的提提,具体的可以google一下. 动态引用编译,是指相关的库,以dll的形式引用库.动态编译的Exe程序尺寸比较小,因为相关 ...

  6. QT多线程及通过事件进行通信(通过自定义事件,然后QApplication::postEvent给主界面,我之前用的是信号槽)

    可以通过QThread实现跨平台的多线程开发,Qt库负责在特定平台上的特定多线程实现.要采用QThread进行多线程开发,首先需要包含头文件: #include <QThread> 然后需 ...

  7. Python 时间 日期常见操作

    import datetime,time dtstr = '2014-02-14 21:32:12' a = datetime.datetime.strptime(dtstr, "%Y-%m ...

  8. mac下配置和访问阿里云服务器(Ubuntu系统)

    1.购买云服务器(http://www.aliyun.com/?spm=5176.3047821.1.1.vHFBuw) 注册帐号,在产品页面选择合适的服务器,进入详细页面选择配置,购买. 购买完成后 ...

  9. css3常用动画效果集合01

    /*由右到左进场*/ .FromRightToLeft{ -webkit-animation:FromRightToLeft 500s .2s ease both; } @-webkit-keyfra ...

  10. css中的zoom的使用

    css中的zoom的使用  zoom : normal | number  normal : 默认值.使用对象的实际尺寸  number : 百分数 | 无符号浮点实数.浮点实数值为1.0或百分数为1 ...