我在一个视图中有3个表视图,我想知道为什么没有调用tableView:cellForRowAtIndexPath:
。
#pragma mark -
#pragma mark <UITableViewDelegate>
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.mainVoucherTableViewController)
[self setSelectedIndex:indexPath.row];
}
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
{
if (tableView == self.mainVoucherTableViewController){
return 10;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.mainVoucherTableViewController){
static NSString *MyIdentifier = @"MyReuseIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
}
cell.textLabel.text = @"THISTEXT";
return cell;
}
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView == self.mainVoucherTableViewController)
return 1;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
// The header for the section is the region name -- get this from the region at the section index.
if (tableView == self.mainVoucherTableViewController){
NSString * myString = [NSString stringWithFormat:@"HELLLO WORLD"];
return myString;
}
}
任何人都知道为什么会这样吗?基本上这不会创建任何单元格或显示单元格。它只显示表格视图。 :(
答案 0 :(得分:1)
首先记录您的tableView:cellForRowAtIndexPath:
方法,看看它是否在if语句以及内部被调用,以帮助缩小问题范围。
也可以尝试而不是比较你的:
tableView == self.mainVoucherTableViewController
将tableViews设置为具有标记值。然后你可以这样做:
if(tableView.tag == 100){ // tag number we assigned self.mainVoucherTableViewController via IB
//do your stuff here
}
答案 1 :(得分:1)
只是为了巩固上面的一些事情:
从你的命名,你的tableView被称为mainVoucherTableViewController - 只是想确认这确实是一个UITableView而不是UITableViewController?如果它是一个UITableViewController,那么其余部分由于显而易见的原因(或不那么明显 - 让我知道并可以进一步解释)不起作用
确保已将当前viewController设置为tableView的委托和dataSource,使用下面的代码或在Interface Builder中使用XIB
self.mainVoucherTableViewController.delegate = self;
self.mainVoucherTableViewController.dataSource = self;
确保调用了numberOfRowsInSection函数,并且返回非零(放入NSLogs等)并对numberOfSections执行相同的操作(如果只是你的话,实际上不需要numberOfSections使用1部分) - 请参阅UITableViewDataSource协议参考:http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html
按照之前的帖子,记录你的cellForRow(如果点#1-3被检查并正常工作),以确保它被触发,并在返回之前。同时做一个你要返回的单元格的NSLog,以确保它不是零。
答案 2 :(得分:-1)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView == self.mainVoucherTableViewController)
{
return 10;
}
else
{retun 5;
}
}
它在第一个表10中显示行,第二个表显示5行。
答案 3 :(得分:-1)
实例声明的顺序很重要。例如,如果您有一个名为tableView
的ivar:
<强> WRONG 强>
self.tableView.delegate = self;
self.tableView = [UITableView alloc] init];
<强> CORRECT 强>
self.tableView = [UITableView alloc] init];
self.tableView.delegate = self;
答案 4 :(得分:-2)
检查UITableView对象框架大小。也许帧大小不足以绘制Cell。