iOS疯狂详解之tableview编辑添加删除

//

//  VkoWLAccountVC.m

//  PocketUniversity

//

//  Created by long on 15-1-14.

//  Copyright (c) 2015年 WLong. All rights reserved.

//

#import "VkoWLAccountVC.h"

#import "VkoWLMoreTableViewCell.h"

#define kIcoArray @[@"消息",@"账号",@"版权"]

#define kTitleArray @[@"听筒模式",@"播放",@"清除缓存"]

@interface VkoWLAccountVC ()

{

// 当前的编辑模式

UITableViewCellEditingStyle _editingStyle;

NSMutableArray *_icoArray;

NSMutableArray *_titleArray;

}

@end

@implementation VkoWLAccountVC

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

_icoArray = [NSMutableArray arrayWithArray:kIcoArray];

_titleArray = [NSMutableArray arrayWithArray:kTitleArray];

[self navTitle:@"账号管理" leftButtonHidden:NO];

[self createView];

_editingStyle = UITableViewCellEditingStyleDelete;

}

- (void)createView

{

_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, self.bgImageView.bottom, kUIScreenWidth, [self getMiddleViewHight]) style:(UITableViewStyleGrouped)];

_tableView.delegate = self;

_tableView.dataSource = self;

_tableView.allowsSelectionDuringEditing = YES;  //编辑状态下可以选中

[self.view addSubview:_tableView];

self.rightButton.hidden = NO;

self.rightButton.backgroundColor = [UIColor clearColor];

[self.rightButton setImage:[UIImage imageNamed:@"编辑"] forState:(UIControlStateNormal)];

[self.rightButton addTarget:self action:@selector(editButtonClick:) forControlEvents:(UIControlEventTouchUpInside)];

}

- (void)editButtonClick:(UIButton *)button

{

[self deleteData];

}

#pragma mark --- UITableView 返回Cell ---

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *cellIdentifier = @"VkoWLMoreTableViewCell";

VkoWLMoreTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (cell == nil) {

cell = [[VkoWLMoreTableViewCell alloc] initWithStyle:(UITableViewCellStyleSubtitle) reuseIdentifier:cellIdentifier] ;

}

cell.selectionStyle = UITableViewCellSelectionStyleNone;

cell.iocImageView.image = [UIImage imageNamed:_icoArray[indexPath.row]];

cell.labelTitle.text = _titleArray[indexPath.row];

[cell.iocImageView.layer setMasksToBounds:YES];

[cell.iocImageView.layer setCornerRadius:25 / 2];

cell.arrowImageView.hidden = YES;

return cell;

}

#pragma mark ---tableView dataSource---

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return _titleArray.count;

}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return 1;

}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

return 20+25;

}

#pragma mark --- 选中跳转 到详情界面 ---

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

}

#pragma mark ---deit delete---

// 让 UITableView 和 UIViewController 变成可编辑状态

- (void)setEditing:(BOOL)editing animated:(BOOL)animated

{

[super setEditing:editing animated:animated];

[_tableView setEditing:editing animated:animated];

}

//  指定哪一行可以编辑 哪行不能编辑

- (BOOL) tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

{

return YES;

}

//  设置 哪一行的编辑按钮 状态 指定编辑样式

- (UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

{

return _editingStyle;

}

// 判断点击按钮的样式 来去做添加 或删除

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

// 删除的操作

if (editingStyle == UITableViewCellEditingStyleDelete) {

[_titleArray removeObjectAtIndex:indexPath.row];

[_icoArray removeObjectAtIndex:indexPath.row];

NSArray *indexPaths = @[indexPath]; // 构建 索引处的行数 的数组

// 删除 索引的方法 后面是动画样式

[_tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:(UITableViewRowAnimationLeft)];

}

// 添加的操作

if (editingStyle == UITableViewCellEditingStyleInsert) {

NSArray *indexPaths = @[indexPath];

[_tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:(UITableViewRowAnimationRight)];

}

}

#pragma mark 删除数据

- (void)deleteData

{

_editingStyle = UITableViewCellEditingStyleDelete;

BOOL isEditing = self.tableView.isEditing;

[self.tableView setEditing:!isEditing animated:YES];

}

- (void)addData

{

_editingStyle = UITableViewCellEditingStyleInsert;

BOOL isEditing = self.tableView.isEditing;

[self.tableView setEditing:!isEditing animated:YES];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

/*

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

// Get the new view controller using [segue destinationViewController].

// Pass the selected object to the new view controller.

}

*/

@end

更多iOS疯狂详解:http://blog.csdn.net/wanglongblog
时间: 2025-01-05 17:30:18

iOS疯狂详解之tableview编辑添加删除的相关文章

iOS疯狂详解之开源库

youtube下载神器:https://github.com/rg3/youtube-dl vim插件:https://github.com/Valloric/YouCompleteMe vim插件配置:https://github.com/spf13/spf13-vim ----------------Mac完整项目---------- 电台:https://github.com/myoula/sostart ----------------iOS完整项目---------------- 1,

iOS疯狂详解之CocoaPods做iOS程序包的依赖管理

每种语言发展到一个阶段,就会出现相应的依赖管理工具, 或者是中央代码仓库.比如 Java: maven,Ivy Ruby: gems Python: pip, easy_install Nodejs: npm 随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,这个工具叫:CocoaPods. CocoaPods简介 CocoaPods是一个负责管理iOS项目中第三方开源代码的工具.CocoaPods项目的源码在Github上管理.该项目开始于2011年8月12日,经过一年多的发

iOS疯狂详解之AFNetworking图片缓存问题

AFNetworking网络库已经提供了很好的图片缓存机制,效率是比较高的,但是我发现没有直接提供清除缓存的功能,可项目通常都需要添加 清除功能的功能,因此,在这里我以UIImageView+AFNetworking类中添加了下面一个清除功能方法: + (void)clearCache; + (void)clearCache { AFImageCache *cache = (AFImageCache *)[UIImageView sharedImageCache]; [cache removeA

iOS疯狂详解之视频播放MPMoviePlayerViewController

需要导入的框架 #import <MediaPlayer/MediaPlayer.h> MediaPlayer.framework MPMoviePlayerViewController: 打开网络视频: -(void)openmovie { MPMoviePlayerViewController *movie = [[MPMoviePlayerViewControlleralloc]initWithContentURL:[NSURLURLWithString:@"视频网络地址&qu

iOS疯狂详解之第三方微信授权登录的iOS代码分析

微信已经深入到每一个APP的缝隙,最常用的莫过分享和登录了,接下来就以代码的形式来展开微信登录的相关说明,至于原理级别的oauth2.0认证体系请参考微信开放平台的相关说明和图示 https://open.weixin.qq.com/ 微信登录授权开发 1,到微信开发平台注册相关APP,现在是等待审核成功后才能获取到对应的key和secret:获取成功后需要单独申请开通登录和支付接口,如图 2,和QQ类似,需要填写Url Schemes,如demo中的wxd930ea5d5a258f4f ,然后

iOS疯狂详解之CocoaPods本身版本升级

查看CocoaPods版本 $ pod --version 0.34.4 确实需要更新了 命令行更新(安装)步骤 $ sudo gem update --system // 先更新gem,国内需要切换源 $ gem sources --remove https://rubygems.org/ $ gem sources -a http://ruby.taobao.org/ $ gem sources -l \*\*\* CURRENT SOURCES \*\*\* http://ruby.tao

iOS疯狂详解之ASIHttpRequest的简单封装

//  iOS疯狂详解之ASIHttpRequest的简单封装 //  WLHTTPClient.h //  WLWLListen // //  Created by long on 14-12-15. //  Copyright (c) 2014年 WLong. All rights reserved. // #import <Foundation/Foundation.h> #import "ASIFormDataRequest.h" @protocol WLHTTPC

iOS疯狂详解之录制音频转换成Mp3

使用第三方 lame ,Mp3音频编码器. 使用 AVAudioRecorder 进行音频录制之前,进行参数设置: NSString *recordTemporaryPathString = [NSString stringWithFormat:@"%@/temporary",self.audioTemporarySavePath]; //LinearPCM 是iOS的一种无损编码格式,但是体积较为庞大 //录音设置 NSMutableDictionary *recordSetting

iOS疯狂详解之warning:performSelector may cause a leak because its selector is unknown

主要是警告信息,在非ARC项目中没有这个警告.如果是在某一处修改只需要加入下列代码: #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks" [self.ticketTarget performSelector: self.ticketAction withObject: self];//此处是你调用函数的地方 #pragma clang diagnosti