我正在从appcoda开发一个简单的表应用程序。我在numberOfRowsInSection
方法中有一个混乱。当我使用numberOfRowsInSection
方法中的 NSLog 在控制台中打印值时,控制台会显示两次而不是一次的值,这意味着调用numberOfRowsInSection
方法两次。
那么你能告诉我为什么会这样吗?
这是我的代码
@implementation ViewController {
NSArray *recipes;
}
- (void)viewDidLoad {
[super viewDidLoad];
recipes = [NSArray arrayWithObjects:@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", @"Hamburger", @"Ham and Egg Sandwich", @"Creme Brelee", @"White Chocolate Donut", @"Starbucks Coffee", @"Vegetable Curry", @"Instant Noodle with Egg", @"Noodle with BBQ Pork", @"Japanese Noodle with Pork", @"Green Tea", @"Thai Shrimp Cake", @"Angry Birds Cake", @"Ham and Cheese Panini", nil];
}
此方法在控制台中两次打印值而不是一次
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSLog(@"No of Recipe :- %d",[recipes count]);
return [recipes count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *tableIdentifier = @"recipeCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:tableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:tableIdentifier];
}
cell.textLabel.text = [recipes objectAtIndex:indexPath.row];
return cell;
}
答案 0 :(得分:2)
这可能是一种正常行为。在numberOfRows
方法中放置一个断点并查看调用堆栈。您可以看到框架本身从两个不同的流中调用numberOfRows
。就我而言,我可以看到:
[UITableView didMoveToWindow]
[UITableView layoutSubviews]
答案 1 :(得分:-1)
我认为你调用reloadData方法2次所以numberOfRowsInSection方法也被调用了2次。
答案 2 :(得分:-2)
查看tableView的部分数量。必须设置为1!