我创建了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委托给File的所有者。 添加了以下内容,
-(void)awakeFromNib
{
self.table_userlist.delegate = self;
self.table_userlist.dataSource = self;
[self.table_userlist reloadData];
}
现在它有效。
请帮助我理解这种情况。当我设置数据源,从xib委托并以编程方式从awakeFromNib
委托时,它会有什么不同。
感谢。
答案 0 :(得分:0)
我认为您已在自定义视图中实现了数据源,并且您正在视图控制器的视图中实例化。
当您实例化时,您可以通过说owner:self
获取视图的所有者船来查看控制器。所以数据源必须在视图控制器中。
在从nib唤醒时,代码仍然在视图中并且您分配委托视图。
答案 1 :(得分:0)
及其委托和数据源到文件的所有者
您必须将这些设置为自定义视图而不是文件所有者。 ,并在该视图中实现委托和数据源方法。