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
  • 相关阅读:
    java RSA 加签验签【转】
    json遍历 分别使用【原】
    oracle 递归和connect by【转】
    css before after基本用法【转】
    Java Web基础——Action+Service +Dao三层的功能划分
    JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
    UUID
    在ssh框架中service-action-jsp-formbeam-dao的调用顺序
    Singleton模式(单例模式)
    真正理解、区分Action,Service和Dao功能
  • 原文地址:https://www.cnblogs.com/xiaotian666/p/5767200.html
Copyright © 2011-2022 走看看