最近的项目中遇到了一个问题,在接口更改之后,我的一个collectionView 在点击事件执行的时候会 navagation push 出一个详情界面,但是再返回 回来的时候,刚才被点击的那个cell 就不见了,他的位置被下面的cell取代,我再点击cell,然后这个cell 也不见了。
我的项目中使用了coreData,并且使用了fetchedResultsController来获取coredata中的数据,在coreData发生变化的时候,我的表视图会根据fetchedResultsController获取的数据自动的更新表格,做出相应的增删改操作,直觉告诉我问题就出在这里。
经过查找,我发现我详情界面使用的model 跟 主界面使用的这个是完全一样的,在详情界面中,我需要再请求一次数据,加载数据模型 的时候 使用了相同的model,这样,在将model从 fetchedResultsController 中 根据特定的id(这个id跟消失的cell相同)取出来这个model,然后给这个model 重新赋值,这个过程导致上个页面的数据源发生了改变(那个id的model发生了改变),所以那个cell 就消失了。
为了解决这个问题,我把上一个页面的model直接传给了下个页面,这样就避免了再次取 同一个model,而产生我们不想要的效果。
如果你有其他不同的看法,欢迎留言探讨。