我是一个名为tableView
的UITableView。它是名为namesArray
的数据数组。
我有一个为数组添加名称的函数,如下所示:
-(void)addName:(NSString*)name
{
[self.namesArray addObject: name];
[self.tableView reloadData];
}
我在reloadData
上致电tableView
后,最后一个单元格(已添加的单元格)未在tableView
上显示,numberOfRowsInSection
会返回实际数字,因此另一个单元格的空间,但没有实际的单元格。
我正在调试cellForRowAtIndexPath
,我发现当cellForRowAtIndexPath
调用新单元格时,dequeueReusableCellWithIdentifier
会在调用其他单元格时返回nil(indexPath.row除外)当然== 0)它返回一个单元格。
cellForRowAtIndexPath
的代码:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier=@"Cell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.text=[self.namesArray objectAtIndex:indexPath.row];
return cell;
}
numberOfRows:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.namesArray.count;
}
注意:如果我尝试使用namesArray
打印NSLog
的最后一个对象,它看起来很好(最后一个对象是已创建的新对象),因此重新加载{的数据时出现问题{1}}
答案 0 :(得分:0)
检查numberOfRowsInSection
中返回的行数- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
应该是这样的:
[self.namesArray count];
答案 1 :(得分:0)
·H
@interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
{
IBOutlet UITextField *txtName;
IBOutlet UITableView *tableObject;
NSMutableArray *namesArray;
}
- (IBAction)btnAdd:(UIButton *)sender;
的.m
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
namesArray = [[NSMutableArray alloc] init];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
{
return namesArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
static NSString *cellIdentifier=@"Cell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.text=[namesArray objectAtIndex:indexPath.row];
return cell;
}
-(void)addName:(NSString*)name
{
[namesArray addObject: name];
[tableObject reloadData];
}
- (IBAction)btnAdd:(UIButton *)sender {
[self addName:txtName.text];
}