UITableView委托方法未从UIView调用

时间:2015-03-25 07:05:23

标签: ios objective-c

我在我的应用中使用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";

3 个答案:

答案 0 :(得分:0)

1)如果您使用Interface Builder创建了UIView弹出窗口和表视图,那么只需在xib中设置表视图的委托和dataSource,在这种情况下,您无需将tableview添加到视图中(如{ {1}}),因为在xib中创建它时,它已经通过他的视图添加。

2)如果你需要在使用xib而不是使用

创建的视图上通过代码设置任何内容 相应视图的

[self addSubview:tableView]方法

加载xib后调用

- (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并且问题已经解决了。希望这也会对你有所帮助。