【发布时间】:2012-08-20 17:43:10
【问题描述】:
我有一个UITableView,在UIView 中名为tblParentComments,属于CBox。
我确实将我的视图设置为我的表视图的数据源和委托,并且我的视图确实实现了这些协议。 tableView:numberOfRowsInSection: 方法确实被调用 并返回一个非零值。但是函数tableView:cellForRowAtIndexPath:从未被调用过。
我注意到,如果我将方法 tableView:cellForRowAtIndexPath: 放入 cmets 中,Xcode 不会停止编译并出现“需要tableView:cellForRowAtIndexPath:”之类的错误——应用程序只是运行并显示一个空表。
我不明白。有任何想法吗?这是我的观点的代码:
接口 CBox.h
@interface CBox : UIView <UITableViewDelegate, UITableViewDataSource>
并且在实现文件中:
- (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
}
【问题讨论】:
-
感谢您的快速回复!我修改了原帖。
-
这个视图是在 xib 中创建的,还是通过代码创建的?
delegate和datasource连接在哪里?在界面生成器中? -
@W'rkncacnter:它是在代码中创建的,参见“initWithFrame”。 tblParentComments.delegate = 自我; tblParentComments.dataSource = self;
-
但是视图本身是在哪里创建的?
-
在 viewController 中,我创建了这个视图并将其添加到 self.view 中,在重新加载数据后,我调用了“[tblParentComments reloadData];”,
标签: objective-c cocoa-touch uitableview