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

我的问题是这样的

  1. 我有一个带有 xib 文件的自定义 UITableView 单元类。
  2. 在界面生成器中,我已将其文件所有者设置为 VC1。 (子类 UIViewController 有一个 UITableView)
  3. 到目前为止一切都很好。 UITableView 显示 VC1 中的数据。
  4. 现在我想在 VC2 的UITableView 中使用相同的 customCell。
  5. 在这个 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。

标签: ios objective-c uitableview


【解决方案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 中的文件所有者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    相关资源
    最近更新 更多