UITableViewCell上的删除按钮(tableView自带的和自定义的)
2017-06-30 09:33
513 查看
#import "ViewController.h"
@interface
ViewController () <UITableViewDataSource,UITableViewDelegate>
@property (nonatomic,strong)UITableView
*table;
@property (nonatomic,strong)NSMutableArray
*array;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
_table = [[UITableViewalloc]initWithFrame:self.view.boundsstyle:UITableViewStylePlain];
_table.delegate = self;
_table.dataSource = self;
[self.viewaddSubview:_table];
_array =[NSMutableArrayarrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",nil];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _array.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath
{
staticNSString *RootViewControllerCell =@"RootViewControllerCell";
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:RootViewControllerCell];
if(cell ==nil)
{
cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:RootViewControllerCell];
cell.frame =CGRectZero;
UIButton *button = [UIButtonbuttonWithType:UIButtonTypeCustom];
[button setTitle:@"删除"forState:UIControlStateNormal];
[button setTitleColor:[UIColorredColor]forState:UIControlStateNormal];
[button setFrame:CGRectMake(280,10,100,30)];
[button addTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];
[cell.contentViewaddSubview:button];
}
cell.textLabel.text = [_array objectAtIndex:[indexPath row]];
//记录tag值,以便自定义删除的时候可以获取到单元格
cell.tag = [indexPath row];
return cell;
}
//自定义删除
-(void)btnClick:(UIButton *)button
{
// 获取当前cell
UITableViewCell *cell = (UITableViewCell *)deleteBtn.superview;
[_array removeObjectAtIndex:[cell tag]]; // 定义按钮的功能,现在为删除
//延迟删除,防止数据错乱
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
(int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(),
^{
[_table reloadData];
});
}
//系统自带删除
//1.将删除标识换成文字
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath
*)indexPath
{
return
@"删除";
}
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
//设置编辑模式为删除模式
if (editingStyle ==
UITableViewCellEditingStyleDelete) {
UIAlertController *alert = [UIAlertController
alertControllerWithTitle:@"提示"
message:@"确定要删除该商品?删除后无法恢复!"
preferredStyle:1];
UIAlertAction *okAction = [UIAlertAction
actionWithTitle:@"确定"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *
_Nonnull action) {
[_array
removeObjectAtIndex:indexPath.row];
// 删除
[tableView deleteRowsAtIndexPaths:@[indexPath]
withRowAnimation:UITableViewRowAnimationFade];
//延迟0.5s刷新一下,否则数据会乱
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
(int64_t)(0.5 *
NSEC_PER_SEC)),
dispatch_get_main_queue(), ^{
[_table reloadData];
});
}];
UIAlertAction *cancel = [UIAlertAction
actionWithTitle:@"取消"
style:UIAlertActionStyleCancel
handler:nil];
[alert addAction:okAction];
[alert addAction:cancel];
[self
presentViewController:alert
animated:YES
completion:nil];
}
if (dataArray.count ==
0) {
[self
cartEmptyShow];
}
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
@interface
ViewController () <UITableViewDataSource,UITableViewDelegate>
@property (nonatomic,strong)UITableView
*table;
@property (nonatomic,strong)NSMutableArray
*array;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
_table = [[UITableViewalloc]initWithFrame:self.view.boundsstyle:UITableViewStylePlain];
_table.delegate = self;
_table.dataSource = self;
[self.viewaddSubview:_table];
_array =[NSMutableArrayarrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",nil];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _array.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath
{
staticNSString *RootViewControllerCell =@"RootViewControllerCell";
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:RootViewControllerCell];
if(cell ==nil)
{
cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:RootViewControllerCell];
cell.frame =CGRectZero;
UIButton *button = [UIButtonbuttonWithType:UIButtonTypeCustom];
[button setTitle:@"删除"forState:UIControlStateNormal];
[button setTitleColor:[UIColorredColor]forState:UIControlStateNormal];
[button setFrame:CGRectMake(280,10,100,30)];
[button addTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];
[cell.contentViewaddSubview:button];
}
cell.textLabel.text = [_array objectAtIndex:[indexPath row]];
//记录tag值,以便自定义删除的时候可以获取到单元格
cell.tag = [indexPath row];
return cell;
}
//自定义删除
-(void)btnClick:(UIButton *)button
{
// 获取当前cell
UITableViewCell *cell = (UITableViewCell *)deleteBtn.superview;
[_array removeObjectAtIndex:[cell tag]]; // 定义按钮的功能,现在为删除
//延迟删除,防止数据错乱
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
(int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(),
^{
[_table reloadData];
});
}
//系统自带删除
//1.将删除标识换成文字
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath
*)indexPath
{
return
@"删除";
}
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
//设置编辑模式为删除模式
if (editingStyle ==
UITableViewCellEditingStyleDelete) {
UIAlertController *alert = [UIAlertController
alertControllerWithTitle:@"提示"
message:@"确定要删除该商品?删除后无法恢复!"
preferredStyle:1];
UIAlertAction *okAction = [UIAlertAction
actionWithTitle:@"确定"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *
_Nonnull action) {
[_array
removeObjectAtIndex:indexPath.row];
// 删除
[tableView deleteRowsAtIndexPaths:@[indexPath]
withRowAnimation:UITableViewRowAnimationFade];
//延迟0.5s刷新一下,否则数据会乱
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
(int64_t)(0.5 *
NSEC_PER_SEC)),
dispatch_get_main_queue(), ^{
[_table reloadData];
});
}];
UIAlertAction *cancel = [UIAlertAction
actionWithTitle:@"取消"
style:UIAlertActionStyleCancel
handler:nil];
[alert addAction:okAction];
[alert addAction:cancel];
[self
presentViewController:alert
animated:YES
completion:nil];
}
if (dataArray.count ==
0) {
[self
cartEmptyShow];
}
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
相关文章推荐
- Android进阶——自定义View之继承系统控件实现自带删除按钮动画效果和软键盘自动悬浮于文本框下方
- iOS tableView自定义删除按钮
- UITableView 自带编辑删除 自定义按钮
- iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除
- 0819-TableView(tableVeiw控件的代理)(tableView单组 lol数据展示)(tableView-汽车品牌logo 右侧a-z)(KVC)(tableView - 添加删除按钮出现)(自定义代理delegate)(内存)
- 自定义Tableview 右滑自带的 Delete按钮
- iOS开发学习之利用系统远程UITableView 自定义滑动删除按钮、增加自定义滑动按钮方法
- 自定义View之自定义EditText带删除内容按钮控件
- 自定义UITableViewCell上的删除按钮
- 自定义searchview的编辑框,搜索按钮,删除按钮,光标等
- Android自定义View示例(一)—带有删除按钮的EditText
- swift-tableView 代理方法实现点击按钮删除效果
- (二)tablebar自定义按钮,去除系统自带的背景
- 【iOS开发】添加系统自带的tableView左滑按钮
- Android自定义View示例(一)—带有删除按钮的EditText
- UITableView删除添加,移动,分区,索引,自定义UITableViewCell
- 自定义View(二)自带清楚按钮的EditText
- tableview添加删除按钮
- iOS学习之TableView03自定义UITableViewCell
- tableVIew删除时的delete按钮被挡住时重写的方法