两个 UIViewController 的不同 UITableView 中的一个自定义 UITableViewCell

Posted

技术标签:

【中文标题】两个 UIViewController 的不同 UITableView 中的一个自定义 UITableViewCell【英文标题】:One Custom UITableViewCell in different UITableView of two UIViewControllers 【发布时间】:2014-05-27 20:45:12 【问题描述】:

我的问题是这样的

    我有一个带有 xib 文件的自定义 UITableView 单元类。 在界面生成器中,我已将其文件所有者设置为 VC1。 (子类 UIViewController 有一个 UITableView) 到目前为止一切都很好。 UITableView 显示 VC1 中的数据。 现在我想在 VC2 的UITableView 中使用相同的 customCell。 在这个 stag 中,我应该在我的单元格的 File's Owner 中设置什么? VC1 还是 VC2?

希望我能把情况弄清楚。

【问题讨论】:

您实际上是否在 Interface Builder 中将任何内容连接到 File's Owner? VC1 和 VC2 是否继承自可以用作文件所有者的公共类? 我将我的每一个 VC 都继承给了一个 ParentVC,只是为了把所有 VC 中的所有通用项都放在那里。是的,我的 VC1 和 VC2 是用 ParentVC 继承的,而 ParentVC 是用 UIViewController 继承的。 那么您可以将文件的所有者设置为 ParentVC。 @Isaac:是的,它奏效了。我做的更多,我必须在两个 VC 中保持相同的自定义单元变量名称。这是必需的,因为我必须在其 xib 文件中链接自定义单元格的 IBOutlet。 幸运的是,我习惯于为每组类创建 Parent 类。如果我们没有父 VC 怎么办,那么这种情况有解决办法吗?因为大多数人直接用 UIViewController 继承他们的 VC。 【参考方案1】:

你看过UITableView类的- (void)registerNib:(UINib *)nib forCellReuseIdentifier:(NSString *)identifier吗?

此方法允许您从单独的 xib 注册单元格。您可以在多个 tableViews 中注册同一个单元格。

例子:

UINib *nib = [UINib nibWithName:@"CustomCell.xib" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"CustomCell"];

现在您可以将tableView:cellForRowAtIndexPath: 中的自定义单元格与上面指定的重用标识符一起使用。

【讨论】:

那么在这种情况下,CustomCell 的 File 的 Owner 会不会很重要?还是我们真的要设置它? 这取决于。您可以有一个自定义单元格类,其中您有 IBOutlets 到单元格内的自定义视图。然后将 CustomCell.xib 中的文件所有者设置为 UITableViewCell 的子类。否则,如果您不需要引用单元格内的视图,则无需执行任何其他操作。它会起作用的。【参考方案2】:

您可能应该定义一个从您的 ParentVC 继承的视图控制器类,并且 VC1 和 VC2(以及任何其他将使用特定自定义单元格 XIB 的视图控制器)从该类继承,以便您可以定义插座和其他东西想在这个新的视图控制器类中使用,并将这个新的视图控制器类用作 XIB 中的文件所有者。

【讨论】:

以上是关于两个 UIViewController 的不同 UITableView 中的一个自定义 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

一个 UIViewController 中的两个 UICollectionView

将UIViewController呈现为UIModalPresentationFormSheet和U IModalPresentationOverCurrentContext

XCode/iOS:将 UIGestureRecognizerDelegate 添加到 UIViewController 后,Storyboard Segue 事件不起作用

在一个 UIViewController 中托管不同的 UITableViewController,例如具有多个视图的日历应用程序

检测打开 uiviewcontroller 的父母

自动切换uiviewcontroller Objective-C