【问题标题】:Loading a UIView within UITableViewCell在 UITableViewCell 中加载 UIView
【发布时间】:2015-02-13 01:50:42
【问题描述】:

我在创建我需要的自定义表格视图时遇到了一个有趣的问题...

我找到了这个question,但它并没有真正解决我的问题...

我试图将一个子类 UIView 放在一个子类 UITableViewCell 中。自定义视图包含一个 UIButton 和几个标签。简化,是这样的:

自定义视图和自定义 tableviewcell 都有 xib。

MyCustomView.xib 的类设置为 MyCustomView,我有标签和按钮的属性以及按钮的 IBAction。

MyCustomTableView.xib 具有 MyCustomView 的属性,并且正在导入 MyCustomView.h。

在 MyCustomView.xib 中,我有这个初始化:

-(id)initWithNibName:(NSString *)nibName nibBundle:(NSBundle *)nibBundle myLabelText:(NSString *)labelText {
    //The custom view in the tableviewcell is 69 by 64...
    if ((self = [super initWithFrame:CGRectMake(0, 0, 69, 64)])) {
        [self setmyLabelText:labelText];
    }
    return self;
}

在我的 TableViewController 中...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    MyCustomTableViewCell *cell = (MyCustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"theCell" forIndexPath:indexPath];

    // Configure the cell...
    cell.customView = [[MyCustomView alloc] initWithNibName:@"MyCustomView" nibBundle:nil fileContentID:@"Some Text..."];

    return cell;
}

当我运行应用程序时,自定义 tableview 单元格的内容很好,但是自定义 tableview 单元格内的自定义视图内容是空白的。

【问题讨论】:

  • 算了,我把评论删了,没看懂你的意思,在柏林已经很晚了;)你的也删了
  • 您无法在 initWithNibName 中设置标签的文本,因为尚未连接出口。此外,您永远不会将自定义视图添加到单元格中,您只需分配初始化它。无论如何,您在 cellForRowAtIndexPath 中这样做也会遇到麻烦,因为每当重用单元格时,您都会添加一个新视图。你真的需要重新考虑你的方法。
  • 为什么你做的太复杂了?在情节提要中,使用您在 tableView 中的需求设计创建一个自定义的 tableviewCell。然后创建一个 UItableViewCell 子类并连接到单元格。然后,将 IBoutlet 连接到视图。

标签: ios objective-c uitableview


【解决方案1】:

似乎 MyCustomView 的初始化程序(-initWithNibName:nibBundle:myLabelText:) 不加载任何 xib。 这篇文章会对你有所帮助。

How to load a xib file in a UIView

...正如@rdelmar 所说,应该在 MyCustomTableViewCell 中创建一次 MyCustomView。

【讨论】:

  • 谢谢。这已更新为推荐容器视图。很好的阅读。我会做一些实验,看看哪个更适合我的应用。
【解决方案2】:

您需要在 MyCustomTableViewCell 中完成大部分格式化工作 - 我不会使用 XIB 并直接对视图进行编码,因为该类被多次调用。 Apple 有许多关于 TableViewCells 的示例代码——我相信其中之一被称为 Elements,它使用花哨的 tableview 单元格作为元素周期表的元素。我的大多数应用程序都使用带有图标图像的自定义单元格,我从多年前的示例代码开始(从 IOS 4 开始)。

您的 CellForRowatIndexPath 应该只是将图像和标签文本传递给您的 tableviewCell 类实例。如果您有任何问题,尽管问 - 但我相信来自 Apple 的示例代码足以让您入门。

【讨论】:

  • 谢谢。我对直接在 tableview 中构建的自定义单元格而不是单元格的 xib 感到满意。我只是希望将我的代码结构进一步划分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多