ios8 tableView设置滑动删除时显示多个按钮
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ios8 tableView设置滑动删除时显示多个按钮,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6666字,纯文字阅读大概需要10分钟。
内容图文
![ios8 tableView设置滑动删除时显示多个按钮](/upload/InfoBanner/zyjiaocheng/1130/331116830c604e55a8def6c8d9d6e695.jpg)
镔哥,研究很久最后才发现iOS8 TableView出新功能,然后就记下来,供大家参考,为大伙所用。
看我博客都知道,我一向都是喜欢代码注释结合,提供demo给大伙参考,写得不好,不要见怪哦。
** * tableView:editActionsForRowAtIndexPath: // 设置滑动删除时显示多个按钮 * UITableViewRowAction // 通过此类创建按钮 * 1. 我们在使用一些应用的时候,在滑动一些联系人的某一行的时候,会出现删除、置顶、更多等等的按钮,在 iOS8 之前,我们都需要自己去实现。但是 ,到了 iOS8 ,系统已经写好了,只需要一个代理方法和一个类就搞定了 * 2. iOS8 的协议多了一个方法,返回值是数组的 tableView:editActionsForRowAtIndexPath: 方法,我们可以在方法内部写好几个按钮,然后放到数组中返回,那些按钮的类就是 UITableViewRowAction * 3. 在 UITableViewRowAction 类,我们可以设置按钮的样式、显示的文字、背景色、和按钮的事件(事件在 Block 中实现) * 4. 在代理方法中,我们可以创建多个按钮放到数组中返回,最先放入数组的按钮显示在最右侧,最后放入的显示在最左侧 * 5. 注意:如果我们自己设定了一个或多个按钮,系统自带的删除按钮就消失了 ... |
下面就写下demo让大家参考:
//
// ViewController.m
// UITableView-Demo
//
// Created by huweibin on 15/1/4.
// Copyright (c) 2014 年 . All rights reserved.
//
#import "ViewController.h"
@interface ViewController () < UITableViewDataSource , UITableViewDelegate >
@property ( nonatomic , retain ) UITableView *tableView;
@property ( nonatomic , retain ) NSMutableArray *allDataArray;
@end
@implementation ViewController
- ( void )viewDidLoad {
[ super viewDidLoad ];
[ self addAllViews ];
[ self loadAllData ];
}
#pragma mark 添加全部页面元素
- ( void )addAllViews
{
self . tableView = [[ UITableView alloc ] initWithFrame :[ UIScreen mainScreen ]. bounds style : UITableViewStylePlain ];
_tableView . delegate = self ;
_tableView . dataSource = self ;
[ self . view addSubview : _tableView ];
#warning iOS8 - 分割线样式
UIBlurEffect *blurEffect = [ UIBlurEffect effectWithStyle : UIBlurEffectStyleDark ];
UIVibrancyEffect *vibrancyEffect = [ UIVibrancyEffect effectForBlurEffect :blurEffect];
_tableView . separatorEffect = blurEffect;
// 注册
[ _tableView registerClass :[ UITableViewCell class ] forCellReuseIdentifier : @"cellIdentifier" ];
// 右上角编辑按钮
self . navigationItem . rightBarButtonItem = self . editButtonItem ;
}
#pragma mark 加载所有数据
- ( void )loadAllData
{
self . allDataArray = [[ NSMutableArray alloc ] initWithObjects : @" 王菲 " , @" 周迅 " , @" 李冰冰 " , @" 白冰 " , @" 紫薇 " , @" 马苏 " , @" 刘诗诗 " , @" 赵薇 " , @"angelbaby" , @" 熊黛林 " , nil ];
}
#pragma mark 编辑按钮
- ( void )setEditing:( BOOL )editing animated:( BOOL )animated
{
[ super setEditing :editing animated :animated];
[ _tableView setEditing :! _tableView . isEditing animated : YES ];
}
#pragma mark - UITableViewDataSource Methods
#pragma mark 设置有多少分组
- ( NSInteger )numberOfSectionsInTableView:( UITableView *)tableView
{
return 1 ;
}
#pragma mark 设置每个分组有多少行
- ( NSInteger )tableView:( UITableView *)tableView numberOfRowsInSection:( NSInteger )section
{
return _allDataArray . count ;
}
#pragma mark 设置某行上显示的内容
- ( UITableViewCell *)tableView:( UITableView *)tableView cellForRowAtIndexPath:( NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier : @"cellIdentifier" forIndexPath :indexPath];
cell. textLabel . text = _allDataArray [indexPath. row ];
// cell.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 256.0 green:arc4random() % 256 / 256.0 blue:arc4random() % 256 / 256.0 alpha:1.0f];
return cell;
}
#pragma mark 设置可以进行编辑
- ( BOOL )tableView:( UITableView *)tableView canEditRowAtIndexPath:( NSIndexPath *)indexPath
{
return YES ;
}
#pragma mark 设置编辑的样式
- ( UITableViewCellEditingStyle )tableView:( UITableView *)tableView editingStyleForRowAtIndexPath:( NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete ;
}
#pragma mark 设置处理编辑情况
- ( void )tableView:( UITableView *)tableView commitEditingStyle:( UITableViewCellEditingStyle )editingStyle forRowAtIndexPath:( NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete ) {
// 1. 更新数据
[ _allDataArray removeObjectAtIndex :indexPath. row ];
// 2. 更新 UI
[tableView deleteRowsAtIndexPaths : @[ indexPath ] withRowAnimation : UITableViewRowAnimationAutomatic ];
}
}
#pragma mark 设置可以移动
- ( BOOL )tableView:( UITableView *)tableView canMoveRowAtIndexPath:( NSIndexPath *)indexPath
{
return YES ;
}
#pragma mark 处理移动的情况
- ( void )tableView:( UITableView *)tableView moveRowAtIndexPath:( NSIndexPath *)sourceIndexPath toIndexPath:( NSIndexPath *)destinationIndexPath
{
// 1. 更新数据
NSString *title = _allDataArray [sourceIndexPath. row ];
[ _allDataArray removeObject :title];
[ _allDataArray insertObject :title atIndex :destinationIndexPath. row ];
// 2. 更新 UI
[tableView moveRowAtIndexPath :sourceIndexPath toIndexPath :destinationIndexPath];
}
/**
* tableView:editActionsForRowAtIndexPath: // 设置滑动删除时显示多个按钮
* UITableViewRowAction // 通过此类创建按钮
* 1. 我们在使用一些应用的时候,在滑动一些联系人的某一行的时候,会出现删除、置顶、更多等等的按钮,在 iOS8 之前,我们都需要自己去实现。 But ,到了 iOS8 ,系统已经写好了,只需要一个代理方法和一个类就搞定了
* 2. iOS8 的 <UITableViewDelegate> 协议多了一个方法,返回值是数组的 tableView:editActionsForRowAtIndexPath: 方法,我们可以在方法内部写好几个按钮,然后放到数组中返回,那些按钮的类就是 UITableViewRowAction
* 3. 在 UITableViewRowAction 类,我们可以设置按钮的样式、显示的文字、背景色、和按钮的事件(事件在 Block 中实现)
* 4. 在代理方法中,我们可以创建多个按钮放到数组中返回,最先放入数组的按钮显示在最右侧,最后放入的显示在最左侧
* 5. 注意:如果我们自己设定了一个或多个按钮,系统自带的删除按钮就消失了 ...
*/
#warning iOS8 -
#pragma mark 在滑动手势删除某一行的时候,显示出更多的按钮
- ( NSArray *)tableView:( UITableView *)tableView editActionsForRowAtIndexPath:( NSIndexPath *)indexPath
{
// 添加一个删除按钮
UITableViewRowAction *deleteRowAction = [ UITableViewRowAction rowActionWithStyle : UITableViewRowActionStyleDestructive title : @" 删除 " handler :^( UITableViewRowAction *action, NSIndexPath *indexPath) {
NSLog ( @" 点击了删除 " );
// 1. 更新数据
[ _allDataArray removeObjectAtIndex :indexPath. row ];
// 2. 更新 UI
[tableView deleteRowsAtIndexPaths : @[ indexPath ] withRowAnimation : UITableViewRowAnimationAutomatic ];
}];
// // 删除一个置顶按钮
// UITableViewRowAction *topRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@" 置顶 " handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
// NSLog(@" 点击了置顶 ");
//
// // 1. 更新数据
// [_allDataArray exchangeObjectAtIndex:indexPath.row withObjectAtIndex:0];
//
// // 2. 更新 UI
// NSIndexPath *firstIndexPath = [NSIndexPath indexPathForRow:0 inSection:indexPath.section];
// [tableView moveRowAtIndexPath:indexPath toIndexPath:firstIndexPath];
// }];
// topRowAction.backgroundColor = [UIColor blueColor];
// 添加一个更多按钮
UITableViewRowAction *moreRowAction = [ UITableViewRowAction rowActionWithStyle : UITableViewRowActionStyleNormal title : @" 更多 " handler :^( UITableViewRowAction *action, NSIndexPath *indexPath) {
NSLog ( @" 点击了更多 " );
[tableView reloadRowsAtIndexPaths : @[ indexPath ] withRowAnimation : UITableViewRowAnimationMiddle ];
}];
moreRowAction. backgroundEffect = [ UIBlurEffect effectWithStyle : UIBlurEffectStyleDark ];
// 将设置好的按钮放到数组中返回
// return @[deleteRowAction, topRowAction, moreRowAction];
return @[ deleteRowAction,moreRowAction ] ;
}
原文:http://blog.csdn.net/sammyieveo/article/details/42418115
内容总结
以上是互联网集市为您收集整理的ios8 tableView设置滑动删除时显示多个按钮全部内容,希望文章能够帮你解决ios8 tableView设置滑动删除时显示多个按钮所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。