当前位置: 首页 > news >正文

点击状态栏让tableview回到顶部最简单的方法

 

先看官方解释,如图:

官方说一个屏幕中只能允许一个scrollsTop = YES;不然就不能滚回顶部了!!

 

最简单的方法:

那么就让一个屏幕中只存在一个scrollsTop = YES就可以了, 其他的scrollsTop = NO;那么就可以默认点击状态栏tableview回到顶部!

完毕!!!

*************************************************************************************************

附加一个不简单的方法:

1. #import "AppDelegate.m"文件中导入头文件#import "ZTStatusWindow.h" (后附代码)

2. 添加[ZTStatusWindow show]; (:在显示主窗口的代码[self.window makeKeyAndVisible],添加[ZTStatusWindow show])

3.  显示状态栏:application.statusBarHidden = NO;([ZTStatusWindow show]方法后添加)

4.  info.plist中在添加一个键值"View controller-based status bar appearance",即选择最后一个即可,相应的选为NO.如图:

 

 只要app有两个窗口,状态栏会自动隐藏, iOS7之后,状态栏交给控制器管理

 这里有窗口根控制器和自定义的控制器,所以会隐藏状态栏(即自定义的窗口), 要把iOS7之后的配置改回来

 

注:ZTStatusWindow.h和ZTStatusWindow.m的代码

 

1. ZTStatusWindow.h

1 #import <UIKit/UIKit.h>
2 
3 @interface ZTStatusWindow : UIWindow
4 
5 + (void)show;
6 
7 @end

 

2. ZTStatusWindow.m

 1 #import "ZTStatusWindow.h"
 2 static ZTStatusWindow *_statusWindow = nil;
 3 @implementation ZTStatusWindow
 4 
 5 #define ZTScreenW [UIScreen mainScreen].bounds.size.width
 6 #define ZTScreenH [UIScreen mainScreen].bounds.size.height
 7 
 8 + (void)show
 9 {
10     ZTStatusWindow *statusWindow = [[ZTStatusWindow alloc] initWithFrame:CGRectMake(0, 0, ZTScreenW, 20)];
11     statusWindow.windowLevel = UIWindowLevelAlert;
12     statusWindow.rootViewController = [[UIViewController alloc] init];
13     statusWindow.backgroundColor = [UIColor clearColor];
14     
15     //lei
16     _statusWindow = statusWindow;
17     statusWindow.hidden = NO;
18 }
19 
20 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
21 {
22     // 获取tableView 遍历主窗口下所有子控件
23     UIWindow *window = [UIApplication sharedApplication].keyWindow;
24 
25 
26     // 获取一个控件中tableView
27     UITableView *tableView = [self searchTableViewInView:window];
28     
29 //    NSLog(@"%@",tableView);
30     
31     // 让tableView回到顶部 => 设置tableView偏移量
32     [tableView setContentOffset:CGPointMake(0, -tableView.contentInset.top) animated:YES];
33     
34     NSLog(@"点击状态栏");
35 }
36 
37 
38 - (UITableView *)searchTableViewInView:(UIView *)view
39 {
40     for (UIView *childView in view.subviews) {
41         
42         if ([childView isKindOfClass:[UITableView class]]) {
43             UITableView *t = (UITableView *)childView;
44             return t;
45         }
46         //如果子控件不是UITableView,那么接着遍历他的子控件看是不是,是的话因为返回值是UITableView *,那么tableview就有值,不然就没值
47        UITableView *tableView = [self searchTableViewInView:childView];
48         
49         //判断那么tableview有没有值
50         if (tableView) {
51             return tableView;
52         }
53         
54     }
55     
56     return nil;
57 
58 }
59 
60 @end

应该没有人用第二种方法吧, 只是为了方便学习。

转载于:https://www.cnblogs.com/loveDodream-zzt/p/6100234.html

相关文章:

  • AngularJS 依赖注入
  • sql2000分享 批量建表dev_编号
  • 20162317袁逸灏
  • js curry化
  • 文件的删除
  • oracle数据库中的基本语句
  • 第九次作业
  • 软件测试:心得简介!
  • python笔记常用模块
  • python 时间类型和相互转换
  • ipcs命令
  • JavaScript谁动了你的代码
  • 《Unix环境高级编程》 阅读笔记之三 - 文件I/O
  • 面向对象--类库、委托、is和as运算符、泛型集合
  • label、input、table标签
  • 4. 路由到控制器 - Laravel从零开始教程
  • chrome扩展demo1-小时钟
  • Consul Config 使用Git做版本控制的实现
  • Javascript弹出层-初探
  • javascript面向对象之创建对象
  • node-glob通配符
  • React-Native - 收藏集 - 掘金
  • Redux 中间件分析
  • SpringBoot几种定时任务的实现方式
  • SQLServer插入数据
  • Zsh 开发指南(第十四篇 文件读写)
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从零开始学习部署
  • 分布式熔断降级平台aegis
  • - 概述 - 《设计模式(极简c++版)》
  • 前端
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 前端相关框架总和
  • 使用权重正则化较少模型过拟合
  • 说说动画卡顿的解决方案
  • mysql面试题分组并合并列
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 透过事物看本质的能力怎么培养?
  • $.each()与$(selector).each()
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (c语言)strcpy函数用法
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (三)elasticsearch 源码之启动流程分析
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)shell调试方法
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • . NET自动找可写目录
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 中创建支持集合初始化器的类型