iOS深入学习(UITableView系列2:reloadData)

接着前一篇的博客来深入学习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语法。

转载于:https://my.oschina.net/leejan97/blog/266234

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值