Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自定义UIView中的UItable_Ios_Objective C_Uitableview_Uiview - Fatal编程技术网

Ios 自定义UIView中的UItable

Ios 自定义UIView中的UItable,ios,objective-c,uitableview,uiview,Ios,Objective C,Uitableview,Uiview,我创建了UIView CustomView的一个子类。还为此创建了一个xib。 在xib中添加了一个tableView,并将其委托和数据源添加到文件的所有者。 然后添加了如下视图 nibViews = [[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self

我创建了UIView CustomView的一个子类。还为此创建了一个xib。 在xib中添加了一个tableView,并将其委托和数据源添加到文件的所有者。 然后添加了如下视图

nibViews = [[NSBundle mainBundle] loadNibNamed:@"CustomView"
                                             owner:self
                                           options:nil];
self.searchView = [ nibViews objectAtIndex: 0];
[self.view addSubview:self.searchView];
它崩溃了。显示
tableView:numberOfRowsInSection::发送到实例的选择器无法识别。
但是我已经实现了所有的数据源方法

然后,我删除了数据源并将其从xib委托给文件的所有者。 增加如下内容:

-(void)awakeFromNib
{
    self.table_userlist.delegate = self;
    self.table_userlist.dataSource = self;
    [self.table_userlist reloadData];

}
现在它开始工作了

请帮助我理解这个场景。当我设置datasource、从xib委派和从
awakeFromNib
编程委派时,会有什么不同。
谢谢。

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

实例化时,通过说出
owner:self
将视图的所有者身份转换为视图控制器。因此,数据源必须位于视图控制器中

在从nib唤醒时,代码仍在视图中,您可以指定委托视图

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

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

在哪个方法中有第一块代码?谢谢。知道了。我在viewController“nibViews=[[NSBundle mainBundle]loadNibNamed:@“CreateUserSearchView”所有者:自我选项:nil];”中使用了此选项。因此,viewController成为文件所有者。如何使CustomView成为所有者?