接着前一篇的博客来深入学习UITableView,
UITableView的数据源是NSMutableArray的对象_infoArray,现在数组的内容为{@"Zero",@"One",@"Two",@"Three",@"Four"},如果数组的内容增加了,该怎样刷新UITableView界面的内容呢?答案是通过reloadData方法,下面我就来模拟一个场景,点击导航栏右侧的ButtonItem,向可变数组_infoArray中随机不重复地添加0~99之间的数字,那么代码这样写吧。
我需要一个存放了0~99的数字的数组,我这样实例化该数组,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
@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方法实现
1
2
3
4
5
6
7
8
9
10
11
|
- ( 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方法,
1
2
3
4
5
6
7
|
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //省略不相干代码
//....
cell.textLabel.text = [NSString stringWithFormat:@ "%@" ,[_infoArray objectAtIndex:indexPath.row]];
//....不相干代码
} |
这样的话就每添加一个元素,就通过reloadData刷新一下界面,显示新增加的内容。
下面的一篇博客,我将介绍带动画刷新界面的insertRow语法。