重复点击主界面(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

时间: 2024-08-02 15:14:07

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

iOS开发——实用技术OC片&点击状态栏回到顶部

点击状态栏回到顶部 经常我们在使用一个App的时候,比如QQ,微信等流行App都会有一个很常见的功能,就是当我们刷新了很多节目的时候,先立刻回到顶部只需要轻轻点一下状态栏就可以(当然这种方法不是谁都知道的,因为app没有提示),也有的会在屏幕的右下角或者某个位置放置一个按钮实现点击按钮一样可以回到顶部,那样实现虽然可以,也不是很麻烦,但是其实系统已经为我们提供了一个很好的自带的功能,我们为什么不用呢? 但是最近在自己视线这个功能的时候遇到了一个小小的问题,那就拿出来分享一下,当然前面也有说到类似

点击状态栏回到顶部

// When the user taps the status bar, the scroll view beneath the touch which is closest to the status bar will be scrolled to top, but only if its `scrollsToTop` property is YES, its delegate does not return NO from `shouldScrollViewScrollToTop`, an

刷新页面让显示区域回到顶部

当你页面浏览到某个位置的时候,大部分浏览器会记录你的浏览位置,当你刷新页面后,还是会显示你刷新前看到的位置. 当需要刷新后回到页面顶部的时候,你用window.onload =function(){$(window).scrollTop(0)}页面还是会在你当前显示的位置. 我猜想这是浏览器最后执行的事件,然后我就给10毫秒延迟,果然就能成功回到顶部了. window.onload = setTimeout(function(){$(window).scrollTop(0)},10); 不用JQ

iOS 点击状态栏回到顶部

@property(nonatomic) BOOL scrollsToTop; // default is YES. UIScrollView 的scrollsToTop默认为YES,当页面里仅一个UIScrollView的时候 ,不需要做任何操作,点击状态栏就可以回到顶部 当页面上有多个UIScrollView时,此时点击状态栏 不会回到顶部 只需要把需要回到顶部的UIScrollView的scrollsToTop设置为YES,其余的设置为scrollsToTop=NO即可

Android 按钮的响应点击事件的4种写法

Android按钮的响应点击事件 学习了按钮的响应点击事件,写一下总结,写的不好的希望大家能给出意见或建议. 这是layout xml文件   点击事件只需要获得Button的id或者onClick <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" an

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

整理来自互联网- 这是tableView继承的scrollView的一个属性 scrollsToTop. 官方说明是这样的: // When the user taps the status bar, the scroll view beneath the touch which is closest to the status bar will be scrolled to top, but only if its `scrollsToTop` property is YES, its del

点击button按钮后界面不自动刷新

问题: 我使用的button标签,在 标签中没有使用ruant=“server”的属性,但是在点击button时,界面还是会刷新 解决方式: 由于界面中含有form标签,而button标签的默认type是submit.所以相当于进行了form提交操作.为了是界面不刷新只需要在botton标签中加入type=“button”即可.

L--怎样让用户点击浏览器后退按钮刷新后退页面的验证码

介绍 项目需要,怎样让用户点击浏览器后退按钮刷新后退页面的验证码,通过cookie来解决 方法一(通过设置前台html)(失败) 本想通过控制html的http-equiv属性来解决问题,如下 http-equiv属性 1.<meta http-equiv="Content-Type" contect="text/html";charset=gb_2312-80"> 和 <meta http-equiv="Content-Lan

C语言API编写窗体界面和按钮

        最近有个同学的程序需要用对话框的方式实现,但前面都是通过黑框形式完成的,老师突然让增加一个界面,本来准备采用MFC完成的,但后来一想,该程序核心东西是体现在它的算法上,控制台的程序并非不好.转念一想,如果使用MFC这样的方法好像需要再倒腾一遍,想到了大一在"C语言能干大事"中的东西,所以就准备采用这种形式直接完成,投机取巧的方法. 主要是通过调用Windows API界面的CreateWindows函数完成,同时也能创建按钮,把参数设置为button,如果想响应该按钮,