接着前一篇的博客来深入学习UITableView,
UITableView的数据源是NSMutableArray的对象_infoArray,现在数组的内容为{@"Zero",@"One",@"Two",@"Three",@"Four"},如果数组的内容增加了,该怎样刷新UITableView界面的内容呢?答案是通过reloadData方法,下面我就来模拟一个场景,点击导航栏右侧的ButtonItem,向可变数组_infoArray中随机不重复地添加0~99之间的数字,那么代码这样写吧。
我需要一个存放了0~99的数字的数组,我这样实例化该数组,
@interface RootViewController ()<UITableViewDelegate,UITableViewDataSource>
{
NSMutableArray *_infoArray;//UITableView数据源
NSArray *_numberArray;//存放数字的数组
}
- (void)viewDidLoad
{
[super viewDidLoad];
//初始化_numberArray数组,并且将0~99数字转换为NSNumber对象添加进入该数组
_numberArray = [[NSMutableArray alloc] initWithCapacity:3];
for(int i = 0;i < 100;i++)
{
NSNumber *tempNumber = [NSNumber numberWithInt:i];
[_numberArray addObject:tempNumber];
}
//初始化TableView数据源
_infoArray = [[NSMutableArray alloc] initWithCapacity:3];
//设置导航栏右侧的按钮,并且绑定点击事件-addNumber
UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonItemStylePlain target:self action:@selector(addNumber:)];
self.navigationItem.rightBarButtonItem = rightItem;
}
导航栏按钮绑定的-addNumber方法实现
- (void)addNumber
{
int count = (int)[_numberArray count];
//0~count随机数
int randomIndex = rand()%count;
NSNumber *tempNumber = [_numberArray objectAtIndex:randomIndex];
[_infoArray addObject:tempNumber];
[_numberArray removeObject:tempNumber];
//调用TableView的reloadData刷新界面
[self.theTableView reloadData];
}
上面的代码大家应该能够看懂吧,就是随机获取_numberArray中的元素,将其加入UITableView数据源_infoArray中,并且再将其从_numberArray中删除,防止重复添加相同元素,当然上面的代码比较暴力,很多情况没考虑,这里只是测试,不要在意这些细节。
TableView刷新界面的时候会执行-tableView:cellForRowAtIndexPath方法,
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//省略不相干代码
//....
cell.textLabel.text = [NSString stringWithFormat:@"%@",[_infoArray objectAtIndex:indexPath.row]];
//....不相干代码
}
这样的话就每添加一个元素,就通过reloadData刷新一下界面,显示新增加的内容。
下面的一篇博客,我将介绍带动画刷新界面的insertRow语法。