我在我的应用中使用UIView
作为弹出窗口。
我在UITableview
添加了UIVIew
。但是,UITableView
的内容不会填充。我已经设置了来自delegate
的{{1}}和datasource
以及代码中的IB
。
没有调用Delegate
个方法。
代码如下:
-(id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
self.tablev.delegate = self;
self. tablev.dataSource = self;
[self addSubview:self. tablev];
}
查看.h
类
@interface MyView : UIView <UITableViewDataSource,UITableViewDelegate>
更新
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyView
*cell = [tableView dequeueReusableCellWithIdentifier:@"c" forIndexPath:indexPath];
if (cell == nil)
{
cell = [[MyView
alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:@"c"];
}
cell.la.text=@"hiiiii";
答案 0 :(得分:0)
1)如果您使用Interface Builder创建了UIView弹出窗口和表视图,那么只需在xib中设置表视图的委托和dataSource,在这种情况下,您无需将tableview添加到视图中(如{ {1}}),因为在xib中创建它时,它已经通过他的视图添加。
2)如果你需要在使用xib而不是使用
创建的视图上通过代码设置任何内容 相应视图的 [self addSubview:tableView]
方法
- (void) awakeFromNib { }
,可以填充/自定义子视图。
3)实现delegate和dataSource方法
答案 1 :(得分:0)
我认为 -
1)您的视图应该是使用xib创建的MyView
2)在此视图上添加表视图(在xib中),并设置委托和数据源
3)克里特为CustomCell创建一个类(使用哪个单元格创建)
4)在MyView类
中实现delegate和dataSource方法- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"c" forIndexPath:indexPath];
if (cell == nil)
{
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"c"];
}
cell.la.text=@"hiiiii";
return cell;
}
答案 2 :(得分:0)
我做了类似的事情并面临同样的问题。在我的案例中没有调用UITableViewDataSource
个方法。在我的情况下,这发生是因为用于填充表的数组是weak
,我做了strong
并且问题已经解决了。希望这也会对你有所帮助。