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

仿写知乎日报第四周

本周主要修改了以往的一些bug,实现了一些遗漏的新功能。

无限右滑

无限右滑我听了学长的思路,首先在scrollView的画布大小设置多一个宽度的画布,然后每当滑到那个画布的时候,就调用一个通知,该通知会触发在首页的viewController上的监听事件,该监听事件会再次进行一次网络请求请求到前一天的数据。然后再次跳转到加载内容的视图。当从该视图退出的时候,会pop回到根视图。在首页的viewWillAppear中,只需要再次对tableView进行reloadData就可以完成对首页tableView的刷新。

scrollView左右滑动的bug

我的scrollView最开始滑动的时候,如果滑动到的视图还没加载出来的时候就进行往回滑,这个视图就会无法被加到正确的位置导致出现空白。原因是我在scrollViewDidEndDecelerating一直根据scrollView.contentOffset.x / self.view.bounds.size.width动态判断着section,但是往回滑的时候当前的section立即变了,但是已经去请求信息依靠的section还是上一个,所以就导致出现bug。我的解决方案是根据我加载的小菊花控件是否关闭来判断是否应该改变当前的section,如果小菊花控件还没有关闭scrollView.contentOffset.x就发生偏移,那就不要将当前的section改变。
代码实现:

if (self.activityIndicator.isAnimating == YES) {[self.activityIndicator stopAnimating];} else {self.section = scrollView.contentOffset.x / self.view.bounds.size.width;NSLog(@"%d", self.section);if (self.section != self.allIndexNum) {[self getData];}if (![self.set containsObject: [NSString stringWithFormat:@"%d", self.section]]) {if (self.isShouCang == NO && _isButton == NO && self.section == self.allIndexNum) {[[NSNotificationCenter defaultCenter] postNotificationName:@"newInfo" object:nil userInfo:nil];self.activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame: CGRectMake(self.view.bounds.size.width / 2 - 50, self.view.bounds.size.height/2 - 50, 80, 80)];[self.view addSubview:self.activityIndicator];[self.activityIndicator startAnimating];} else {[self webViewGet];self.activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame: CGRectMake(self.view.bounds.size.width / 2 - 50, self.view.bounds.size.height/2 - 50, 80, 80)];[self.view addSubview:self.activityIndicator];[self.activityIndicator startAnimating];}}}

FMDB的删除和返回收藏夹页面刷新tableView

上周我只写了FMDB的增加,这周完成了删除:

- (void)deleteDataWithID: (NSString*)idStr {if ([self.collectionDatabase open]) {NSLog(@"%@", idStr);BOOL result = [self.collectionDatabase executeUpdate:@"delete from collectionData WHERE id = ?", idStr];if (!result) {NSLog(@"数据删除失败");} else {NSLog(@"数据删除成功");}}
}

在完成删除的时候遇到一个bug,当对收藏夹中的内容进行删除后,虽然FMDB数据库删除掉了,但是返回收藏夹页面时,tableView并没有改变,只能退出收藏夹页面再点进去才能刷新。我凭借写无限右滑学到的方法,同样在删除收藏夹内容的方法中使用了通知传值,每当一个数据被删除的时候就触发在收藏夹页面的监听事件,该监听事件中就直接重新获取一遍FMDB数据库中的内容然后给对应的数组赋值。当从内容界面返回收藏夹时,在viewWillAppear中,只需要再次对tableView进行reloadData就可以完成对收藏夹tableView的刷新。

评论区的展开收缩

这里是看了学长的博客写的,[iOS开发]评论展开效果的实现

然后一开始遇到了我的展开button无法点击的问题,一看我的button都不在页面上只有一个buttonLabel在,然后发现是Masonry布局的问题,只要有一项的布局是负数就无法将button加入视图。于是我修改了Masonry,它就可以点了。
但是还有一个button的复用问题。我的button少的时候还能正常展开,但是button一多就会乱套,我明天会改正这个bug

点赞收藏按钮持久化

这个功能我也是依靠FMDB实现的。点赞的内容新建一个FMDB,收藏的内容就用保存收藏夹持久化的FMDB,然后保存的内容就是点赞和收藏按钮的select状态。然后在scrollView中,每当滑倒一个视图,就判断该页面对应的id的FMDB的点赞或收藏按钮的状态然后给按钮赋值。

效果实现:
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/227435.html

相关文章:

  • MySQL join原理及优化
  • js案例:打地鼠游戏(打灰太狼)
  • 删除杀软回调 bypass EDR 研究
  • Ansible自动化部署工具-组件及语法介绍
  • postgresql实现job的六种方法
  • layui 表格(table)合计 取整数
  • 深入理解 TCP;场景复现,掌握鲜为人知的细节
  • 【MySQL系列】 第二章 · SQL(中)
  • IBM Qiskit量子机器学习速成(一)
  • 音视频基础知识
  • ida81输入密码验证算法分析以及破解思路
  • C语言——贪吃蛇
  • Android sqlite 使用简介
  • UE地形系统材质混合实现和Shader生成分析(UE5 5.2)
  • Git分支与Git标签的介绍及其场景应用
  • Three.js——基于原生WebGL封装运行的三维引擎
  • 第八章认识Express框架
  • 【K8s集群离线安装-kubeadm】
  • python工具CISCO ASA设备任意文件读取
  • TCP关闭的两种方法概述
  • Git的Hooks机制
  • 代码随想录算法训练营第四十九天|121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 II
  • Rust教程6:并发编程和线程通信
  • JVM在线分析-监控工具(jps, jstat, jstatd)
  • Console LDAP 配置解密
  • node插件MongoDB(三)—— 库mongoose 的使用和数据类型(一)
  • 基础(二)
  • 思维模型 目标效应
  • 【从0到1设计一个网关】性能优化---Netty线程数配置与JVM参数配置
  • node插件MongoDB(五)—— 库mongoose 的模块化(五)