博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS深入学习(UITableView系列2:reloadData)
阅读量:5102 次
发布时间:2019-06-13

本文共 2000 字,大约阅读时间需要 6 分钟。

接着来深入学习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语法。

转载于:https://www.cnblogs.com/yinxiao-bai1014/p/5047559.html

你可能感兴趣的文章
App右上角数字
查看>>
小算法
查看>>
WPF中实现多选ComboBox控件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IOS-图片操作集合
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
ActiveMQ与spring整合
查看>>
格式化输出数字和时间
查看>>
关于TFS2010使用常见问题
查看>>
URL编码与解码
查看>>
剑指offer系列6:数值的整数次方
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
Bootstrap栅格学习
查看>>