一. WKWebView的使用问题
开始我想滑倒一个页面请求一个页面,没有显示的页面就从scrollView上移除。但是后来发现WKWebView并不能简单的用remove从父视图上移除,而且这种方法多次加载后会变的非常卡顿。我还没有找到特别好的解决方法,于是放弃这种思路。思路二我简化了第一个思路。依然是滑倒一个页面加载一个页面,不过没有显示的页面不会移除它,而是把它放到一个集合。每次加载页面前都通过集合判断这个页面是否已加载过,以减少多次重复加载造成的卡顿。
二. 无限右滑
设置当页面滑倒最右边继续滑动一定距离会发送通知。
[[NSNotificationCenter defaultCenter] postNotificationName:@"scrollRightMore" object:nil userInfo:@{@"value":[NSNumber numberWithInteger:number]}];
ViewController注册通知,接收通知后进行新一轮网络请求。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getlastTimeStories) name:@"scrollViewRightMore" object:nil];
刷新tableView和网络界面(一定要切换主线程,栽了几次了)。
[_manage getLastTime:lastDate StoriesData:^(LastStoriesModel * _Nonnull lastStoriesModel) {
if (self->_lastStoriesModelArray == nil) {
self->_lastStoriesModelArray = [[NSMutableArray alloc] init];
}
[self->_lastStoriesModelArray addObject:lastStoriesModel];
dispatch_async(dispatch_get_main_queue(), ^{
[self sendStoriserToView:lastStoriesModel];
[self->_interFaceView viewInit];
});
} error:^(NSError * _Nonnull error) {
NSLog(@"getLastModel error");
}];
三. 数据库储存
学习使用FMDB库储存一些基本数据。我这里分别储存了点赞页面和收藏页面的ID。如果需要使用,就要ID重新申请。
这里一个问题是在储存进数据库前,我是用集合储存这些数据的。但是在插入数据是我是遍历集合插入,就会导致很多数据被多次重复储存。
我的解决办法是每次插入前先在数据库查询一次要插入的元素,如果没有在插入。
- (void) saveStroiesLikeSet {
if ([self.likeDatabase open]) {
for (NSString* ID in self.storiesLikeSet) {
FMResultSet* resultSet = [self.likeDatabase executeQuery:@"SELECT * FROM likeData WHERE mainLable = ?", ID];
if (![resultSet next]) {
BOOL result = [self.likeDatabase executeUpdate:@"INSERT INTO likeData (mainLable) VALUES (?)", ID];
if (result) {
NSLog(@"insert table succeed");
} else {
NSLog(@"insert table error");
}
}
}
[self.likeDatabase close];
}
}
参考文章
发表评论