知乎 日报

news2025/1/10 10:55:03

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 评论界面
  • 首页cell的小标题的文字显示
  • 下拉刷新


前言

这周完成了评论内容,改了一些小bug。收藏界面正在加油,FMDB库目前不是很理解


评论界面

在这里插入图片描述
在这里插入图片描述

关于长评论和短评论,我是把他们分成了三个section。第一个section是长评论,第二个section是短评,第三个section是@“已加载全部评论”
第一个section的小标题就是请求到的数据中的长评论的个数,第二个section的小标题就是请求到的数据中短评的个数。
cell的高度我是通过计算对应的文字的行数,然后将行数存到数组里,在返回数组。根据对应的行数来计算对应cell的高度这样子实现

这里是cell上文字高度的计算

labText.numberOfLines = 0;
        [labText sizeToFit];
        CGFloat height = labText.frame.size.height;
        int num = height/labText.font.lineHeight;
        NSString* strHeight = [NSString stringWithFormat:@"%d", num];
        [self.longHeightArray addObject:strHeight];
        labText.numberOfLines = num + 10;
        NSMutableParagraphStyle* paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        paragraphStyle.lineSpacing = 10;
        NSMutableDictionary* attributes = [NSMutableDictionary dictionary];
        [attributes setObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
        labText.attributedText = [[NSAttributedString alloc] initWithString:labText.text attributes:attributes];

这里是cell的各个section和各个高度的返回

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 3;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    if (section == 0){
        return [self.LongCommentDictionary[@"comments"] count];
    } else if (section == 1){
        return [self.shortCommentDictionary[@"comments"] count];
    } else {
        return 1;
    }
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
//    int i = 0;
//    int m = 0;
    if (indexPath.section == 0 ){
        NSString* strHeight = self.longHeightArray[indexPath.row];
        int num = [strHeight intValue];
        return (num * 20 + 90);
    } else if (indexPath.section == 1 && indexPath.row < self.shortHeightArray.count){
        NSString* strHeight = self.shortHeightArray[indexPath.row];
        int num = [strHeight intValue];
        return (num * 20 + 90);
    } else{
        return 100;
    }
    return 0;
}
- (void)addView{
    [self addSubview:self.commentTableView];
}
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
    header.contentView.backgroundColor= [UIColor clearColor];
    header.textLabel.font = [UIFont boldSystemFontOfSize:20];
    header.textLabel.textColor = [UIColor blackColor];
    if (section == 0){
        NSString* str = [NSString stringWithFormat:@"%lu条长评", [self.LongCommentDictionary[@"comments"] count]];
        header.textLabel.text = str;
    } else if (section == 1){
        NSString* str = [NSString stringWithFormat:@"%lu条短评", [self.shortCommentDictionary[@"comments"] count]];
        header.textLabel.text = str;
        
    }
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    return @"111";
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    if (section == 2){
        return 0;
    } else{
        return 20;
    }
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    if (section == 2){
        return 0;
    } else{
        return 20;
    }
}

首页cell的小标题的文字显示

之前写的发现有bug,每次下拉刷新后请求到了前一天的日期,但是每次下拉后改变了所有section的标题,不是一个section的标题
重新使用了一种方法去写这块

- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
   
    if (section != 0 && section != self.addSection - 1 && section != 1){
        
        
        NSString* str = self.allCellArray[section - 2][@"date"];
        NSString* strNew = [str substringFromIndex:4];
        NSString* dateOne = [strNew substringToIndex:2];
        NSString* dateTwo = [strNew substringFromIndex:2];
        NSString* date = [NSString stringWithFormat:@"   %@月%@日---------------------------", dateOne, dateTwo];
        UILabel* lab = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, WIDTH - 30, 40)];
        lab.textColor = [UIColor grayColor];
        lab.text = date;
        [lab setFont:[UIFont systemFontOfSize:25]];
        return lab;
        
    }
    return 0;
}

- (NSString*)tableView:(UITableView*)tableView titleForHeaderInSection:(NSInteger)section{
    if (section != self.addSection - 1){
        return @"111";
    } else{
        return 0;
    }
}

在这里插入图片描述

下拉刷新

发现下拉刷新的bug是下拉三次以上的时候,请求到的两个section的cell就成了相同的。采用大佬的方法,将每次请求到的数据加到一个array里,然后这个cell上的各种信息使用这个array中的数据

- (void)GetBefore{
    
    
    NSString* dateOld = self.allCellArray[self.addSection - 4][@"date"];
    

    
    NSDictionary* dic = [NSDictionary dictionaryWithObject:dateOld forKey:@"111"];
    NSNotification* notification = [NSNotification notificationWithName:@"tongzhi" object:nil userInfo:dic];
    [[NSNotificationCenter defaultCenter] postNotification:notification];
    
    
    
    //[self.tableView reloadData];

}
- (void)GetBefore{
    
    
    [[OldManager shareManger]makeData:^(HomeModel * _Nonnull ViewModel) {
        
        self.viewHome.stroiesDictionary = [ViewModel toDictionary];
        [self.viewHome.allCellArray addObject:self.viewHome.stroiesDictionary];
        
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.viewHome.tableView reloadData];
        });
    } error:^(NSError * _Nonnull error) {
        NSLog(@"请求失败!");
    }date:(NSString*)self.oldDate];
    
}
else if (indexPath.section != 0 ){
        //在这里进行相应的布局
    }

收藏界面FMDB库暂时没看明白。正在加油

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21652.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++初阶】三、类和对象(中)

在上一篇类和对象中&#xff0c;我们初步了解了类和对象的基本概念&#xff0c;知道了什么是类&#xff0c;接下来一起看看类和对象的具体细节和实现吧。&#xff08;以日期类举例&#xff09; 文章目录类和对象【中】1.类的6个默认成员函数2. 构造函数2.1 构造函数定义2.2 构造…

SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.16 SpringBoot 整合 ES 客户端操作

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇4 数据层解决方案4.16 SpringBoot 整合 ES 客户端操作4.16.1 环境准备…

[附源码]java毕业设计停车场收费管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

DP入门(一)

前言&#xff1a;由于作者经常卡力扣周赛最后一题的dp&#xff0c;因此决定痛改前非&#xff0c;从头做人&#xff0c;争取下次能做出最后一道dp ak周赛&#xff01;呜呜呜加油~~ 因此 这个系列的文章不会教 dp &#xff0c;只会讲刷题思路&#xff0c;目前的计划是先更 lc 的题…

[Spring Cloud] RestTemplate跨进程调用

✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f4d6;MyBatis专栏&#x1f4d6;Spring专栏&#x1f4d6;SpringMVC专栏&#x1f4d6;SpringBoot专…

【k8s】5、资源管理命令-声明式

文章目录一、 yaml和json介绍1、yuml语言介绍2、k8s支持的文件格式3、yaml和json的主要区别二、声明式对象管理1、命令式对象配置2、声明式对象配置3、声明式对象管理命令介绍三、编写资源配置清单1、 编写yaml文件2、 启动并查看资源3、创建service服务对外提供访问测试4、创建…

MySQL介绍

MySQL数据库最初是由瑞典MySQL AB公司开发&#xff0c;2008年1月16号被Sun公司收购。2009年&#xff0c;SUN又被Oracle收购。MySQL是目前IT行业最流行的开放源代码的数据库管理系统&#xff0c;同时它也是一个支持多线程高并发多用户的关系型数据库管理系统。MySQL之所以受到业…

基于51单片机的舞蹈机器人四路步进电机控制仿真

资料编号&#xff1a;091 下面是相关功能视频演示&#xff1a; 91-基于51单片机的舞蹈机器人四路步进电机控制仿真&#xff08;源码仿真全套资料&#xff09;功能介绍&#xff1a;通过51单片机控制4个步进电机旋转&#xff0c;模拟出机器人的四肢动作&#xff0c;全套资料齐全…

ES6 入门教程 17 Promise 对象 17.2 基本用法

ES6 入门教程 ECMAScript 6 入门 作者&#xff1a;阮一峰 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录ES6 入门教程17 Promise 对象17.2 基本用法17 Promise 对象 17.2 基本用法 ES6 规定&#xff0c;Promise对象是一个构造函数&#xff0…

【Java高级】一篇文章带你搞懂线程

目录 | 线程概述 | 线程创建 方式一&#xff1a;继承 Thread 类 方式二&#xff1a;实现 Runnable 接口 一些小细节 方式三&#xff1a;实现 Callable 接口&#xff08;JDK1.8&#xff09; | 线程生命周期 生命周期概述 [获取线程信息] 方法 set/getName current [运…

ArcGIS绘制北半球俯视投影地图

做全球碳水循环,植被变化,极端气候相关研究的同学都知道。北半球是核心,因为北半球的核心区域(东亚湿润区,中亚干旱半干旱,青藏高原,阿拉伯半岛,非洲北部沙漠以及美国西部等等核心区): 对于北半球的展示一般采用下面的图: 那么该如何做呢? 熟悉地图学的同学都知道…

Dubbo-聊聊Dubbo协议

前言 Dubbo源码阅读分享系列文章&#xff0c;欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrapper 注册中心 Dubbo-聊聊注册中心的设计 Dubbo-时间轮设计 通信 Dubbo-聊聊通信模块设计 什么是协议 在网络交…

【FreeRTOS】FreeRTOS删除任务vTaskDelete()

使用说明&#xff1a; 任务中。小时 &#xff08;任务句柄_t xTask&#xff09;; INCLUDE_vTaskDelete必须定义为1&#xff0c;才能使用此函数。有关更多信息&#xff0c;请参见RTOS配置文档。 从RTOS内核管理中删除任务。正在删除的任务将从所有就绪、阻止、暂停和事件列表中删…

CEAC 之《计算机应用助理工程师》1

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;微微的猪食小窝 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 微微的猪食小窝 原创 收录于专栏 【CEAC证书】 1组合框有3种不同的类型&#xff0c;这3种类型是下拉式组合框、简单组合框、下拉式列表框&…

12. PyQt5实现多页面切换之QTabBar

PyQt5 QTabBar 类 QTabBar 类直接继承自 QWidget。该类提供了一个选项卡栏&#xff0c;该类仅提供了一个选项卡&#xff0c; 并没有为每个选项卡提供相应的页面&#xff0c;因此要使选项卡栏实际可用&#xff0c;需要自行为每个选项 卡设置需要显示的页面&#xff0c;可以通过 …

【k8s】6、pod详解

文章目录一、pod介绍1、pod的基础概念2、pod定义&#xff08;资源清单&#xff09;二、Pod中的容器配置1、基本配置2、镜像拉取&#xff08;imagePullPolicy&#xff09;3、启动命令&#xff08;command&#xff09;4、环境变量&#xff08;env&#xff09;5、端口设置&#xf…

应急响应-计划任务排查

计划任务排查 由于很多计算机都会自动加载“计划任务”&#xff0c;“计划任务”也是恶意病毒实现持久化驻留的一种常用手段&#xff0c;因此在应急响应事件排查时需要进行排查。通俗的讲会定期执行某些操作。 Windows计划任务排查 任务计划是Windows系统的一个预置实现某些…

【数据结构】二叉树的顺序存储结构 —— 堆

文章目录前言二叉树的顺序存储堆的概念和结构堆的实现结构的定义接口总览初始化销毁插入向上调整删除向下调整取堆顶数据计算堆大小判空打印堆完整代码Heap.hHeap.ctest.c结语前言 今天&#xff0c;我们开始二叉树的学习。本篇博客的内容为 介绍二叉树的顺序存储 和 堆的实现。…

【滤波跟踪】基于matlab不变扩展卡尔曼滤波器对装有惯性导航系统和全球定位系统IMU+GPS进行滤波跟踪【含Matlab源码 2232期】

⛄一、简介 针对室内定位中的非视距&#xff08;Non-Line-of-Sight,NLOS&#xff09;现象,提出一个新型算法进行识别,同时有效缓解其影响.主要通过超宽带&#xff08;Ultra-Wideband,UWB&#xff09;定位系统与惯性导航系统&#xff08;Inertial Navigation System,INS&#x…

酒店管理系统的设计与实现

Word下载链接如下&#xff1a; https://download.csdn.net/download/yw1990128/87096359 一 设计背景 1.1 课题现状 随着国家社会经济水平的提升&#xff0c;各酒店的发展速度越来越快&#xff0c;入住人员也越来越多。酒店房间的管理要求也愈来愈大&#xff0c;所以很多酒店正…