0

我有一个表视图,我正在尝试将数据加载到其中。从NSLog显示器上看,数据是正确且存在的。但是没有调用以下方法,例如NSLog根本没有出现评论:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];    
    // UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
}
NSString *cellValue = [listOfStates objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
return cell; 
NSLog(@"Passed: cellForRowAtIndexPath");

}

同样,init 也没有运行。我虽然 init 总是运行,如果存在的话?

- (id)init { 
    if ((self = [super init])) {
    listOfStates = [[NSMutableArray alloc] init];
    stateName = [[NSString alloc] init];
    NSLog(@"INIT StateName %@", stateName);
    }
return self;
 NSLog(@"Passed: init");
}

有任何想法吗?

4

3 回答 3

1

如果你把它放在NSLogreturn 之后,它将退出该方法并且 NSLog 不会被调用,每当你调用 return 时它都会退出该方法。

于 2012-07-14T08:49:46.357 回答
1

tableView:cellForRowAtIndexPath:当需要一个单元格时,由其数据源上的表格视图调用,这可以是第一次显示单元格时,或者当用户滚动并且单元格将出现时

没有调用您的 init 方法,因为 UITableView 使用initWithFrame:style:和 UITableViewController (不清楚您要覆盖哪个 init)使用initWithStyle:,而不是“普通” init 方法。如果要进行自定义设置,则应覆盖这些方法

正如其他答案所提到的,您在 return 语句之后放置的任何内容都不会被执行

于 2012-07-14T09:12:05.730 回答
0

回答您的问题:tableView:cellForRowAtIndexPath:从您的表格视图中作为数据源方法调用。要调用它,您必须将 tableviews 数据源属性设置为实现的类tableView:cellForRowAtIndexPath:。另一方面 sujith 是对的:NSLog不会在 a 之后调用return

于 2012-07-14T08:55:09.243 回答