知乎日报--第二周总结
这周主要把第一周没有完成的东西完成了,然后写了刷新但还是存在一些乱七八糟的问题需要解决😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭
1.上周最上面的时间没有实现这周实现了。
获取当前时间并把时间转为字符串
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// HH是24进制,hh是12进制
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *string = [formatter stringFromDate:date];
NSLog(@"%@", string);
注:使用日期说明符来设置日期格式
EEEE:“星期”的全名(比如Monday)。如需缩写,指定1-3个字符(如E,EE,EEE代表Mon)。
MMMM:“月份”的全名(比如October)。如需缩写,指定1-3个字符(如M,MM,MMM代表Oct)。
dd:某月的第几天(例如,09或15) yyyy:四位字符串表示“年”(例如2015) HH:两位字符串表示“小时”(例如08或19)
mm:两位字符串表示“分钟”(例如05或54)
ss:两位字符串表示“秒”
zzz:三位字符串表示“时区”(例如GMT)。缩写Z
GGG:公元前BC或公元后AD
在获取需要的部分时间时用到了字符串的截取
//从第八个字符开始,截取长度为2的字符串
NSString* dayString = [string substringWithRange:NSMakeRange(8, 2)];
NSString* monthString = [string substringWithRange:NSMakeRange(5, 2)];
//补充
//截取到第n为(第n位不算在内)
NSString *str3 = [str substringToIndex:2];
//从第n为开始直到最后(包含第n位)
NSString *str4 = [str substringFromIndex:11];
2.刷新时需要对过去时间的数据进行网络请求,那么什么时候进行网络请求呢?向下拖动时进行网络请求,那么通过什么判断呢?
这里我通过使用当前显示屏幕高度跟整个屏幕的高度进行比较,如果当前显示的屏幕高度小于设定的刷新时的屏幕显示高度,通过协议传值(其他传值也可以)使viewController进行刷新,同时获取网络请求的数据。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView.tag == 102) {
CGFloat height = scrollView.frame.size.height;
CGFloat contentOffsetY = scrollView.contentOffset.y;
CGFloat bottomOffset = scrollView.contentSize.height - contentOffsetY; //计算屏幕差
if (bottomOffset <= height*0.7) {
[_delegate refreshData];//??
}
}
}
这里遇到的问题有:这个代理对象调用协议函数的位置,这里是控制对过去的数据进行网络请求的,它的位置放到下面这里时不响应,没有进行网络请求,设置断点发现它不走这一步,说明它的高度设置还存在问题。
3.刷新还存在问题,因为返回行数的设置有问题,之前没有考虑到每组的行数不一定都是六行,所以出现了刷新部分之后就不再继续刷新的问题了
4.在写cell点进去的页面时,我最开始想的是使用tableview上cell的点击事件使用didSelectRowAtIndexPath
方法,在这个方法中进行页面跳转,跳转则需要获取当前视图控制器的导航栏,所以要在controller中进行跳转,一开始是通过把controller作为tableView
的delegate,但是代理只能有一个,只把这个方法写在controller中就导致不能响应。后来还是选择使用传值,来控制它的跳转。