在我的工程新版本中,需要自定义一个新的cell如图,
而我的版本升级之前使用的是这样的cell
为了减少工作量,我决定使用之前的 cell 去掉背景之后直接放到新的 cell 上面,这样的话,我们创建的model,和一系列方法就能在新的cell中进行调用,省了不少事,但是问题出现了,但我运行程序的时候就会报错,如下
UITableview Cell exception - 'Must translate autoresizing mask into constraints to have _setHostsLayoutEngine:YES
不得已,我只好求助强大的谷歌,果真有好多人遇到类似的问题,虽然报的错是相同的,但是产生的原因,却不尽相同,不过归根结底,原因都是,我们把UITableViewCell 使用在了 UITableView 以外 的其他 View上,某种意义上说 就是 UITableViewCell 和UITableView是放在一起用的,UITableViewCell 就像是鱼,UITableView就是水,鱼不能离开水而单独存在,但是,我之前确实使用过xib创建UITableViewCell 单独放在ViewController 的 视图上的,因为单独创建一个View 是不能直接创建xib文件的,需要后来关联,为了节省工作量,我就直接创建了一个UITableViewCell 这样view也有了xib也有了,而且也能正常使用,这是个cell
在这里使用
我把这个cell 当做view 来使用 直接加载到了viewController.view上面而不是tableView上面是能够正常使用的,难道这就是另外一种情况了吗。
好吧让我们还回到原始问题上,为了解决这个问题,我又使用xib创建了一个view,内容是跟那个cell一样的,然后创建同样的 showModel 方法,再在我们的新cell中粘贴一个同样的view进去,然后就能调用同样的方法,而且不再报错 ,但是出现了另外一个棘手的问题,就是每当我们需要修改cell 中控件的时候,如果增加删除了东西,都需要在cell 和那个view中同时做同样的事情,不然就得不到修改的效果,这一点有些蛋碎,如果哪位客官解决过这类问题,欢迎前来探讨,