Objective c tableView:cellForRowAtIndexPath:从未被调用

Objective c tableView:cellForRowAtIndexPath:从未被调用,objective-c,cocoa-touch,uitableview,Objective C,Cocoa Touch,Uitableview,我有一个UITableView,在UIView中名为tblParentComments,属于CBox类 我已经明确地将我的视图设置为表视图的数据源和委托,并且我的视图实现了这些协议。方法tableView:numberOfRowsInSection:会被调用并返回一个非零值。但是函数tableView:cellforrowatinexpath:从未被调用 我注意到,如果我将tableView:cellForRowAtIndexPath:方法放在注释中,Xcode不会停止编译,并出现类似table

我有一个UITableView,在UIView中名为tblParentComments,属于CBox类

我已经明确地将我的视图设置为表视图的数据源和委托,并且我的视图实现了这些协议。方法tableView:numberOfRowsInSection:会被调用并返回一个非零值。但是函数tableView:cellforrowatinexpath:从未被调用

我注意到,如果我将tableView:cellForRowAtIndexPath:方法放在注释中,Xcode不会停止编译,并出现类似tableView:cellForRowAtIndexPath:这样的错误-应用程序只是运行并显示一个空表

我不明白。有什么想法吗?这是我的观点的代码:

接口CBox.h

@interface CBox : UIView <UITableViewDelegate, UITableViewDataSource> 

是的,我也有同样的问题。。。我刚刚找到了解决办法

在我的类中,我使用具有不同参数的不同init

在my-voidviewDidLoad中,我使用CGRectZero分配表视图,只有在这种情况下,如果您不设置UITableView的框架,则:

将调用numberOfRowsInSection

永远不会调用CellForRowatineXpath


我刚设置了我的UITableView框架,它就工作了。

是的。。我也有同样的问题。。。我刚刚找到了解决办法

在我的类中,我使用具有不同参数的不同init

在my-voidviewDidLoad中,我使用CGRectZero分配表视图,只有在这种情况下,如果您不设置UITableView的框架,则:

将调用numberOfRowsInSection

永远不会调用CellForRowatineXpath


我刚刚设置了我的UITableView框架,它就工作了。

当我读到上面的评论时,我可以想出两件事:

您可能已经弄乱了代码的一些结构。您应该始终遵守视图控制器中的协议-!不是看。或者,我喜欢这样做,因为它使我能够更好地控制我的代码,并使事情保持干净,独立的协议不在控制器的视野之内——这意味着创建新的对象模型对象,该对象将处理表所需的一切,并且它将符合表委托和数据源

若你们明智地组织你们的代码,你们应该避免你们描述的情况


另外,我相信你可能有两个符合表协议的对象,这就是问题的症结所在

当我读到上面的评论时,我可以想出两件事:

您可能已经弄乱了代码的一些结构。您应该始终遵守视图控制器中的协议-!不是看。或者,我喜欢这样做,因为它使我能够更好地控制我的代码,并使事情保持干净,独立的协议不在控制器的视野之内——这意味着创建新的对象模型对象,该对象将处理表所需的一切,并且它将符合表委托和数据源

若你们明智地组织你们的代码,你们应该避免你们描述的情况


另外,我相信你可能有两个符合表协议的对象,这就是问题的症结所在

谢谢你的快速回复!我修改了原来的帖子。这个视图是在xib中创建的,还是通过代码创建的?委托和数据源连接在哪里?在Interface Builder中?@W'rkncacnter:它是在代码中创建的,cf'initWithFrame'。tblParentComments.delegate=self;tblParentComments.dataSource=self;但是视图本身是在哪里创建的呢?在一个viewController中,我创建了这个视图并将它添加到self.view中,在重新加载数据之后,我调用了[tblParentComments reloadData];,谢谢你的快速回复!我修改了原来的帖子。这个视图是在xib中创建的,还是通过代码创建的?委托和数据源连接在哪里?在Interface Builder中?@W'rkncacnter:它是在代码中创建的,cf'initWithFrame'。tblParentComments.delegate=self;tblParentComments.dataSource=self;但是视图本身是在哪里创建的呢?在一个viewController中,我创建了这个视图并将它添加到self.view中,在重新加载数据之后,我调用了[tblParentComments reloadData];,
- (id) initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {        
        tblParentComments = [[UITableView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.frame.size.width, frame.size.height)];
        tblParentComments.delegate = self;
        tblParentComments.dataSource = self;
        //tblParentComments.userInteractionEnabled = NO;
        tblParentComments.backgroundColor = [UIColor clearColor];
        tblParentComments.separatorStyle = UITableViewCellSeparatorStyleNone;
        tblParentComments.bounces = NO;
        [self addSubview:tblParentComments];
    }
    return self;
}

#pragma mark - UITableViewDelegate + UITableViewDatasource

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSLog(@"num of rows = %d", parentComents.count);
    return 1;  // I set a non-zero value for test
}


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 .... // I set a breakpoint here, never been called here
}