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. java 时间戳和PHP时间戳 的转换

    java 时间戳和PHP时间戳 的转换 PHPJava  总结一下java 时间戳和PHP时间戳 的转换问题: 由于精度不同,导致长度不一致,直接转换错误. JAVA时间戳长度是13位,如:12948 ...

  2. 使用php作linux自动执行脚本

    使用php作linux自动执行脚本 [来源] 达内    [编辑] 达内   [时间]2013-03-21 在作社区时, 时常需要统计上线人数等数据. 一般做法是, 把这段代码放在用户 login或者 ...

  3. 资源(1)----封装类(连接数据库mysql,分页)

    一,链接MYSQL数据库 class DBDA{ public $host="localhost";//服务器地址 public $uid="root";//数 ...

  4. ubuntu 制作deb 包

    ubuntu下打包制作deb安装包 http://www.th7.cn/system/lin/201406/61012.shtml   2014-06-22 20:16:45CSDN-yangbing ...

  5. pylint window下安装与使用

    简介 Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8)和有潜在问题的代码. Pylint ...

  6. 转: .NET MVC3 几种返回 JSON 对象的方式和注意事项

    .NET MVC3 几种返回 JSON 对象的方式和注意事项 转自:http://blog.csdn.net/xxj_jing/article/details/7382589 引言在用 .NET MV ...

  7. 如何迁移测试的MAGENTO到正式运行的MAGENTO

    或者这个题目叫做如何改变MAGENTO的运行目录 第一,我们需要在PHPMYADMIN备份整个MAGENTO的数据.备份数据并且存为.SQL. 在这儿假设你的测试网站在http://dev.site. ...

  8. Essential Documents to Manage Your Projects

    Speak to an experienced project manager, and they can give you a wealth of good advice on the do's a ...

  9. boost.compressed_pair源码剖析

    意义 当compressed_pair的某一个模板参数为一个空类的时候将对其进行“空基类优化”,这样可以使得compressed_pair占用的空间比std::pair的更小. 参考如下代码: #in ...

  10. linux 进入mysql

    mysql -u root -ppassword show databases; \h 帮助 \q 退出