我有一个TableView,我正在尝试将数据加载到。从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");
}
有什么想法吗?
答案 0 :(得分:1)
如果在返回后放置NSLog
,它将退出该方法并且不会调用NSLog,无论何时调用return它都会退出该方法。
答案 1 :(得分:1)
tableView:cellForRowAtIndexPath:
在其数据源上由表视图调用,这可以是首次显示单元格时,也可以是用户滚动并且单元格将出现时
你的init方法没有被调用,因为UITableView使用initWithFrame:style:
和UITableViewController(它不清楚你试图覆盖哪个init)使用initWithStyle:
,而不是“普通”init方法。如果要进行自定义设置,则应覆盖这些方法
正如其他答案所提到的,你在return语句之后放的任何内容都不会被执行
答案 2 :(得分:0)
回答你的问题:tableView:cellForRowAtIndexPath:
从表视图中被称为数据源方法。要调用它,必须将tableviews数据源属性设置为实现tableView:cellForRowAtIndexPath:
的类。另一方面,sujith是对的:NSLog
后不会调用return
。