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. DirectX 常用选项(转)

    内存池表面和其它一些Direct3D资源被放在多种内存池中.内存池的种类由D3DPOOL枚举类型的一个成员来指定.可用到的内存池有下列几种:D3DPOOL_DEFAULT--表示Direct3D将根据 ...

  2. selenium测试套件

    1.测试套件测试套件,简单理解就是讲多个用例,装在一个容器里来同时执行完成. 2.测试套件分析 #coding=utf-8 import unittestimport BaiDuSearch,BaiD ...

  3. 一个很好的Delphi博客

    一个很好的Delphi博客,主人叫万一 http://www.cnblogs.com/del/archive/2011/09/21/2183007.html

  4. Linux的权限说明

    Linux的权限不是很细致,只有RWX三种r(Read,读取):对文件而言,具有读取文件内容的权限:对目录来说,具有浏览目录的权限.w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权 ...

  5. Java 判断图片资源的存在否

    question: 如题,举个例子吧 String image ="http://info-database.csdn.net/Upload/2010-10-30/735-60sap1030 ...

  6. css层叠选择

    首先声明一下CSS三大特性——继承.优先级和层叠.继承即子类元素继承父类的样式,比如font-size,font-weight等f开头的css样式以及text-align,text-indent等t开 ...

  7. (转)js的call和apply

    1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...

  8. XCode中的单元测试:编写测试类和方法(内容意译自苹果官方文档)

    当你在工程中通过测试导航栏添加了一个测试target之后, xcode会在测试导航栏中显示该target所属的测试类和方法. 这一章演示了怎么创建测试类,以及如何编写测试方法. 测试targets, ...

  9. HDFS中高可用性HA的讲解

    HDFS Using QJM HA使用的是分布式的日志管理方式 一:概述 1.背景 如果namenode出现问题,整个HDFS集群将不能使用. 是不是可以有两个namenode呢 一个为对外服务-&g ...

  10. Kib Kb KB KIB 区别

    今天和同事聊了一下Kib Kb KB KIB这几个单位的含义及其区别,自己在网上也查了查资料,总结如下: Ki 和 K 只是数学单位 Ki = 1024 K  = 1000 这二者之间没有任何联系 B ...