UITabelViewEdit
来源:互联网 发布:ppt数据分析图怎么做 编辑:程序博客网 时间:2024/06/04 19:09
#import "RootViewController.h"#import "Cat.h"//多个协议之间用逗号隔开@interface RootViewController () <UITableViewDataSource, UITableViewDelegate> { UITableView *myTableView ;}@property (nonatomic, retain)NSMutableArray *catArray;//因为要删除, 设置成可变的@endstatic NSString *identifier = @"abc";@implementation RootViewController- (void)dealloc{ [_catArray release]; [super dealloc];}- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view.// self.view.backgroundColor = [UIColor yellowColor]; myTableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain]; [self.view addSubview:myTableView]; myTableView.dataSource = self;//提供数据, myTableView.delegate = self;//提供样式, 时刻 [myTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:identifier]; [myTableView release]; //从 plist 文件读取内容 NSString *path = [[NSBundle mainBundle] pathForResource:@"Cat" ofType:@"plist"]; NSArray *array = [NSArray arrayWithContentsOfFile:path];//最外层是数组 NSLog(@"%@", array); //数组里面放字典(对象) //数据封装 self.catArray = [NSMutableArray arrayWithCapacity:0];//数组初始化 for (NSDictionary *dic in array) {//得到的数组里面都是字典 //1和4比较常用 //1.属性// Cat *cat = [[Cat alloc] init];// cat.name = dic[@"name"];// cat.type = dic[@"type"];// [self.catArray addObject:cat];// [cat release];//数组已经保留一份了 //2.KVC(间接访问属性)// Cat *cat = [[Cat alloc] init];// [cat setValue:dic[@"name"] forKey:@"name"];// [cat setValue:dic[@"type"] forKey:@"type"];// [self.catArray addObject:cat];// [cat release];//数组已经保留一份了 //3.KVC(多个赋值)(常用), key 值和属性名相同// Cat *cat = [[Cat alloc] init];// [cat setValuesForKeysWithDictionary:dic];// [self.catArray addObject:cat];// [cat release];//数组已经保留一份了 //4. Cat *cat = [[Cat alloc] initWithDictionary:dic];// cat 类中分装了初始化字典的方法 [self.catArray addObject:cat]; [cat release]; } NSLog(@"%@", self.catArray); self.navigationItem.title = @"猫咪大全"; self.navigationItem.rightBarButtonItem = self.editButtonItem; //tableView编辑的步骤: //1.让 tabelView进入编辑状态 //2.指定哪些行, 进入编辑(默认全选), 可选的 //3.指定编辑的样式(默认是删除), 可选的 //4.编辑完成}//导航栏按钮,已经封装好了- (void)setEditing:(BOOL)editing animated:(BOOL)animated { //继承一下父类的 [super setEditing:editing animated:animated];//切换 NSLog(@"%d", editing);//进入编辑1; 退出编辑0 //第一步: setEdit [myTableView setEditing:editing animated:YES];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}#pragma mark - UITableViewDataSource- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.catArray.count;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath]; Cat *cat = self.catArray[indexPath.row];//字典赋给对象 cell.textLabel.text = [NSString stringWithFormat:@"匿名: %@, 品种:%@",cat.name, cat.type]; return cell;}//第二步,canEdit- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == 0) {//第一行, 不进入编辑 return NO; } return YES;}//第四步,commitEditingStyle- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"%s", __FUNCTION__); if (editingStyle == UITableViewCellEditingStyleDelete) { //删除(原则:先删数据, 再删 cell) [self.catArray removeObjectAtIndex:indexPath.row]; [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationMiddle]; } else if (editingStyle == UITableViewCellEditingStyleInsert) { //添加 }}#pragma mark - UITableViewDelegate//第三步,editingStyle- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == self.catArray.count - 1) { return UITableViewCellEditingStyleInsert; } return UITableViewCellEditingStyleDelete;}@end//在 cat 里面写一个,init 方法(字典)#import "Cat.h"@implementation Cat- (void)dealloc{ [_name release]; [_type release]; [super dealloc];}- (instancetype)initWithName:(NSString *)name type:(NSString *)type { if (self = [super init]) {//将父类初始化值, 赋给子类自己 self.name = name; self.type = type; } return self;}+ (instancetype)catWithName:(NSString *)name type:(NSString *)type { return [[[self alloc] initWithName:name type:type] autorelease];}- (instancetype)initWithDictionary:(NSDictionary *)otherDictionary { if (self = [super init]) { [self setValuesForKeysWithDictionary:otherDictionary]; } return self;}//使用 KVC 赋值时,遇到没有定义的 key值- (void)setValue:(id)value forUndefinedKey:(NSString *)key {}//使用 KVC 取值时,遇到没有定义的 key值- (id)valueForUndefinedKey:(NSString *)key { return nil;}- (NSString *)description{ return [NSString stringWithFormat:@"name:%@, type:%@", _name, _type];}@end
0 0
- UITabelViewEdit
- 学习 ui-router - 路由控制
- Fedora 22下ParaviewWeb安装
- XML 新手入门基础知识
- [leetcode] 48. Rotate Image
- hibernate连接多个数据库,如何动态切换(我一般用配置文件动态切换)
- UITabelViewEdit
- Python编程(四):两个实用的Python的装饰器
- 手动安装Intel network I217-LM网卡的Linux驱动
- AES加密java.security.InvalidKeyException: Illegal key size or default parameters
- UVa 839 - Not so Mobile【递归】
- jvm terminated exit code=xxx
- 手机号的正则表达式
- dev cpp 以及 codeblocks 常用编辑技巧
- gpio_direction_output 与 gpio_set_value