Git地址: https://github.com/tianzhuo112/VTMagic
Git上有VTMagic的介绍及使用,这里不多说了,直接上问题
问题:项目中引进了VTMagic,实现左右滑动切换视图的功能,所有的子控制器都是相同的类。当滑动到某一个页面时,出现了数据重复的问题。
原因:没做每个页面的数据缓存。当切换页面时,要取出对应的缓存数据传给控制器,刷新界面。
缓存核心代码:
在子控制器类的viewDidDisappear中保存数据
<pre>
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
//由于页面可能会被重用,需要取消不必要的网络请求
//[self cancelNetworkRequest];
//缓存页面数据,将数组存到内存字典中
[[NewsCacheManager sharedInstance] saveNewsInfo:newsArr channelIDKey:self.channelId];
}
</pre>
在控制器中重写setMenuInfo方法,加载对应的缓存数据,刷新界面
<pre>
- (void)setMenuInfo:(ChannelEntity*)menuInfo
{
_menuInfo= menuInfo;
self.channelId = menuInfo.channelID;
[self loadLocalData];
}
- (void)loadLocalData
{
//加载本地缓存数据
newsArr= [NSMutableArrayarrayWithArray:[[NewsCacheManagersharedInstance]fetchNewsInfo:self.channelId]];
if(newsArr.count>0) {
[self reloadTblData];
return;
}
}
</pre>
另外分享个找Bug的心得:当你花了1个小时关注细节而没找出原因时,不妨把查找范围扩大一些。可以查看当前类中所有的代码,可能就是其他位置的代码处理了这部分逻辑。
网友评论