本周主要修改了以往的一些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的点赞或收藏按钮的状态然后给按钮赋值。
效果实现: