自定义 UIView 中的 UItable

Posted

技术标签:

【中文标题】自定义 UIView 中的 UItable【英文标题】:UItable in a custom UIView 【发布时间】:2014-06-20 06:12:56 【问题描述】:

我创建了 UIView CustomView 的子类。还为此创建了一个xib。 在 xib 中添加了一个 tableView 及其委托和数据源给 File 的所有者。 然后添加这个视图如下。

nibViews = [[NSBundle mainBundle] loadNibNamed:@"CustomView"
                                             owner:self
                                           options:nil];
self.searchView = [ nibViews objectAtIndex: 0];
[self.view addSubview:self.searchView];

它崩溃了。说tableView:numberOfRowsInSection:]:unrecognized selector sent to instance. 但是我已经实现了所有的数据源方法。

然后我删除了数据源并从 xib 委托给了文件的所有者。 添加以下内容,

-(void)awakeFromNib

    self.table_userlist.delegate = self;
    self.table_userlist.dataSource = self;
    [self.table_userlist reloadData];


现在它可以工作了。

请帮助我理解这种情况。当我设置数据源、来自 xib 的委托和以编程方式来自awakeFromNib 时,它有什么不同。 谢谢。

【问题讨论】:

第一个代码块是通过什么方法获得的? 【参考方案1】:

我认为您已经在自定义视图中实现了数据源,并且您正在视图控制器的视图中进行实例化。

当您实例化时,您通过说owner:self 将视图的所有权交给视图控制器。所以数据源必须在视图控制器中。

在从 nib 唤醒时,代码仍在视图中,您可以分配委托视图。

【讨论】:

谢谢。知道了。我在 viewController "nibViews = [[NSBundle mainBundle] loadNibNamed:@"CreateUserSearchView" owner:self options:nil];" 中使用了这个。因此 viewController 成为了文件所有者。如何让 CustomView 成为所有者?【参考方案2】:

及其对文件所有者的委托和数据源

您必须将这些设置为您的自定义视图,而不是文件的所有者。 ,并在该视图中实现委托和数据源方法。

【讨论】:

以上是关于自定义 UIView 中的 UItable的主要内容,如果未能解决你的问题,请参考以下文章

如何在已经是 NIB 的 UICollectionViewCell 中加载带有自定义单元格的 UITable

自定义 UITableViewCell 中的自定义 UIView

在 Storyboard 中设计的自定义 UITableViewCell 中的自定义 UIView

嵌入在 UIView 中的动态 UITableView - 计算高度

自定义 UIView 中的 UIScrollView 不滚动

在另一个自定义 UIView 中设置/更改嵌套自定义 UIView 的变量