zoukankan      html  css  js  c++  java
  • 重复点击主界面(TabBar)按钮刷新界面--点击状态栏回到顶部

    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怎么监听?
         
    1 - (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属性,表示当前控制器在窗口上显示,没有就没显示。
     
    1        // 在屏幕上控制器的view才需要刷新界面
    2     if (self.view.window) {
    3         // 开始下拉刷新,触发下拉刷新,调用下拉刷新方法
    4         [self.tableView.mj_header beginRefreshing];
    5     }
     
    三.点击状态栏回到顶部
     
    1.UIScrollView有个特性,点击状态栏,会自动回到顶部
     
    2.为什么会有这个特性?
         因为 scrollsToTop这个属性, 苹果对这个属性有介绍  (默认为YES)
         介绍:在当前显示的所有view中,如果多个scrollView的 scrollsToTop属性都打开,就没有效果了
                   整个屏幕上只能一个scrollView打开scrollsToTop,才有用
     
    3.怎么让我们的主题控制器也拥有: 点击状态栏,自动回到顶部?
         只让主题控制器的scrollsToTop = YES 即可
         在精华和新帖的父控制器中,设置collectionView 和 scrollView(标题按钮栏) 的scrollsToTop属性为NO
  • 相关阅读:
    独立思考者模型:识别媒体与砖家的谎言 对精确性的痴迷
    独立思考者模型:你相信灵魂转世假说吗? 一次统计的头脑风暴
    独立思考者模型:如何分辨信息的真伪 不要再被虚假信息蒙骗
    独立思考者模型:寻找潜藏在表象背后的真相 探寻真相的方法
    独立思考者模型:避开思维误区的沼泽 我们很多时很蠢
    独立思考者模型:用专家的思维思考问题 从阅读到吸收再到模型建立
    独立思考者模型:如何科学地思考 掌握更正确的思维方式
    eclipse从svn检出项目
    网络通讯框架MINA和XSCOCKET的简单比较
    浏览器的渲染原理简介
  • 原文地址:https://www.cnblogs.com/xiaotian666/p/5767200.html
Copyright © 2011-2022 走看看