我在两个不同的控制器中有两个不同的桌面视图。但是我需要在其中显示的细胞看起来相同。我在一个桌面上创建了一个原型单元格,并在uitaiteViewcell中创建了一个原型单元格。现在,如果我想在另一个控制器中使用同一单元格,我该如何使用?
如果我只是在新控制器中导入该customcell文件,并使用情节提要中给出的相同标识符Deque将其插入,则它将无法使用。它说
- [uitableview _configurecellfordisplay:forIndExpath:]
由于未被发现的例外,终止应用程序 " nSinternalIncistencyException",原因:'UITATION VIEW DATASOURCE 必须从tableview返回单元格:cellforrowatIndExpath:'
因此,显然是指单元为零。那么如何从情节板上实例化相同的单元格?是否有可能,还是我也必须为新桌子创建另一个Customcell?
k ..我明白了。首先,
我不能在两个不同的tableview中使用一个原型单元格。但是我 可以在两个不同的tableViews中使用相同的TableViewCell子类。
为了实现它,只需要从一个控制器复制原型单元格即可将其粘贴到另一个桌面的原型单元格。粘贴的表观视图的类别保持不变。只需更改重复使用者即可。并使用它。
编辑:如果您的单元格具有相当复杂的UI,那么单独为单元创建单独的XIB更有意义。然后在表视图上编程地注册XIB。这样,您将只有一个单元格的副本,并且在UI发生更改时将其维护得多。
您可以在不同的视图控制器中使用相同的原型单元格,您只需要从设计它的控制器的表视图中排出它。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let viewControllerInWhichCellWasDefined = tabBarController?.viewControllers?[0]
let cell = viewControllerInWhichCellWasDefined.tableView.dequeueReusableCell(withIdentifier: "identifier", for: indexPath)
return cell
}
如果在XIB中创建自定义单元格,则可以正常工作。但是,我怀疑该单元的identifier
引起了问题。尝试更改每个表视图控制器的单元格标识符。
如果不是,您可能需要发布源代码
是。我们可以将ViewControllera的TableView的原型单元格用于ViewControllerb的表视图。只需要在ViewControllerb中实现以下代码
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let vc_array = self.navigationController?.viewControllers
let view_controller = vc_array![vc_array!.count - 2] as! ViewControllerA
let cell = view_controller.tableView.dequeueReusableCell(withIdentifier: "ViewControllerA_ID", for: indexPath) as! ViewControllerA
return cell
}
此处的ViewControllera是viewController,它包含带有原型单元格的表观视图,我们在ViewControllerb的表观上使用了相同的单元格
我在不同应用程序中使用了相同的uitableViewCell。只需将一个TableViewCell复制到另一个应用程序即可。那两个应用程序都具有相同的布局等。这些应用不属于同一工作空间。设置效果很好,没有问题或错误。.只是不知道这是否很好。