iOS tableView右滑顯示選擇
如何使用UITableViewRowAction實現右滑選擇呢?
1、在iOS8以前,我們實現tableview中滑動顯示刪除,置頂,更多等等的按鈕時,都需要自己去實現,在iOS8中系統已經寫好了,只要一個代理方法和一個類就行了
2、iOS8的協議對了一個方法,返回值是數組的tableview:editActionForRowAtIndexPath:方法,我們可以在方法內部寫好幾個按鈕,然后放到數組中返回,那些按鈕的類就是UITableviewRowAction
3、在 UITableviewRowAction類。我們可以設置按鈕的樣式,顯示文字、背景色和按鈕事件(在block內實現)
4、在代理方法中,我們可以常見多個按鈕放到數組中返回,最先放入數組的按鈕顯示在最右邊,最后放入的顯示在最左邊
5、如果自己設定一個或多個按鈕,系統自帶的刪除按鈕就消失了
設置tableView可以編輯
- (BOOL)tableView: (UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
UITableViewRowAction的使用方法:
+ (instancetype)rowActionWithStyle:(UITableViewRowActionStyle)style title:(nullable NSString *)title handler:(void (^)(UITableViewRowAction *action, NSIndexPath *indexPath))handler;
重寫UITableViewDelegate的
- (nullable NSArray
*)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
方法。
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row==0)
{
// 添加一個刪除按鈕
deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"刪除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
NSLog(@"點擊了刪除");
}];
}
else if (indexPath.row==1)
{
// 添加一個刪除按鈕
deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"刪除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
NSLog(@"點擊了刪除");
}];
// 添加一個修改按鈕
moreRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"修改" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
NSLog(@"點擊了修改");
}];
moreRowAction.backgroundEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
}
else if (indexPath.row==2)
{
// 添加一個刪除按鈕
deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"刪除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
NSLog(@"點擊了刪除");
}];
// 添加一個修改按鈕
moreRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"修改" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
NSLog(@"點擊了修改");
}];
moreRowAction.backgroundEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
// 添加一個發送按鈕
sanRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"發送" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
NSLog(@"點擊了發送");
}];
sanRowAction.backgroundColor=[UIColor orangeColor];
}
else
{
// 添加一個刪除按鈕
deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"刪除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
NSLog(@"點擊了刪除");
}];
// 添加一個修改按鈕
moreRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"修改" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
NSLog(@"點擊了修改");
}];
moreRowAction.backgroundEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
// 添加一個發送按鈕
sanRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"發送" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
NSLog(@"點擊了發送");
}];
sanRowAction.backgroundColor=[UIColor orangeColor]; // 添加一個發送按鈕
OK = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"OK鍵" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
NSLog(@"點擊了OK");
}];
OK.backgroundColor=[UIColor purpleColor];
}
// 將設置好的按鈕放到數組中返回
if (indexPath.row==0)
{
return @[deleteRowAction];
}
else if (indexPath.row==1)
{
return @[deleteRowAction,moreRowAction];
}
else if(indexPath.row==2)
{
return @[deleteRowAction,moreRowAction,sanRowAction];
}else if(indexPath.row==3)
{
return @[deleteRowAction,moreRowAction,sanRowAction,OK];
}
return nil;
}
來自:http://www.cocoachina.com/ios/20161114/18070.html
本文由用戶 SPBMar 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!