自定义UIView中的UItable

时间:2014-06-20 06:12:56

标签: ios objective-c uitableview uiview

我创建了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委托时,它会有什么不同。 感谢。

2 个答案:

答案 0 :(得分:0)

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

当您实例化时,您可以通过说owner:self获取视图的所有者船来查看控制器。所以数据源必须在视图控制器中。

在从nib唤醒时,代码仍然在视图中并且您分配委托视图。

答案 1 :(得分:0)

  

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

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