iOS 中使用tableView實(shí)現(xiàn)右滑顯示選擇功能
1、在iOS8以前,我們實(shí)現(xiàn)tableview中滑動(dòng)顯示刪除,置頂,更多等等的按鈕時(shí),都需要自己去實(shí)現(xiàn),在iOS8中系統(tǒng)已經(jīng)寫好了,只要一個(gè)代理方法和一個(gè)類就行了
2、iOS8的協(xié)議對(duì)了一個(gè)方法,返回值是數(shù)組的tableview:editActionForRowAtIndexPath:方法,我們可以在方法內(nèi)部寫好幾個(gè)按鈕,然后放到數(shù)組中返回,那些按鈕的類就是UITableviewRowAction
3、在UITableviewRowAction類。我們可以設(shè)置按鈕的樣式,顯示文字、背景色和按鈕事件(在block內(nèi)實(shí)現(xiàn))
4、在代理方法中,我們可以常見(jiàn)多個(gè)按鈕放到數(shù)組中返回,最先放入數(shù)組的按鈕顯示在最右邊,最后放入的顯示在最左邊
5、如果自己設(shè)定一個(gè)或多個(gè)按鈕,系統(tǒng)自帶的刪除按鈕就消失了
設(shè)置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<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
方法。
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { if(indexPath.row==0){ // 添加一個(gè)刪除按鈕 deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"刪除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { NSLog(@"點(diǎn)擊了刪除"); }]; } else if (indexPath.row==1){ // 添加一個(gè)刪除按鈕 deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"刪除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { NSLog(@"點(diǎn)擊了刪除"); }]; // 添加一個(gè)修改按鈕 moreRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"修改" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { NSLog(@"點(diǎn)擊了修改"); }]; moreRowAction.backgroundEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; } else if (indexPath.row==2){ // 添加一個(gè)刪除按鈕 deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"刪除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { NSLog(@"點(diǎn)擊了刪除"); }]; // 添加一個(gè)修改按鈕 moreRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"修改" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { NSLog(@"點(diǎn)擊了修改"); }]; moreRowAction.backgroundEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; // 添加一個(gè)發(fā)送按鈕 sanRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"發(fā)送" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { NSLog(@"點(diǎn)擊了發(fā)送"); }]; sanRowAction.backgroundColor=[UIColor orangeColor]; } else{ // 添加一個(gè)刪除按鈕 deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"刪除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { NSLog(@"點(diǎn)擊了刪除"); }]; // 添加一個(gè)修改按鈕 moreRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"修改" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { NSLog(@"點(diǎn)擊了修改"); }]; moreRowAction.backgroundEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; // 添加一個(gè)發(fā)送按鈕 sanRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"發(fā)送" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { NSLog(@"點(diǎn)擊了發(fā)送"); }]; sanRowAction.backgroundColor=[UIColor orangeColor]; // 添加一個(gè)發(fā)送按鈕 OK = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"OK鍵" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { NSLog(@"點(diǎn)擊了OK"); }]; OK.backgroundColor=[UIColor purpleColor]; } // 將設(shè)置好的按鈕放到數(shù)組中返回 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; }
以上所述是小編給大家介紹的iOS 中使用tableView實(shí)現(xiàn)右滑顯示選擇功能的相關(guān)資料,希望對(duì)大家有所幫助。
相關(guān)文章
IOS開發(fā) UIAlertController詳解及實(shí)例代碼
這篇文章主要介紹了 IOS開發(fā) UIAlertController詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-12-12IOS App 無(wú)代碼入侵的方法hook詳細(xì)介紹
這篇文章主要介紹了IOS App 無(wú)代碼入侵的方法hook詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-12-1212個(gè)iOS技術(shù)面試題及答案總結(jié)
這篇文章給大家總結(jié)了在iOS面試的時(shí)候可能會(huì)遇到的12個(gè)技術(shù)面試題,以及這些面試題但答案,這些答案只是給大家一些參考,大家可以再結(jié)合自己理解進(jìn)行回答,有需要的朋友們下面來(lái)一起看看吧。2016-09-09iOS開發(fā)中使app獲取本機(jī)通訊錄的實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了iOS開發(fā)中使app獲取本機(jī)通訊錄的實(shí)現(xiàn)代碼實(shí)例,主要用到了AddressBook.framework和AddressBookUI.framework,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-01-01iOS毛玻璃效果的實(shí)現(xiàn)及圖片模糊效果的三種方法
App設(shè)計(jì)時(shí)往往會(huì)用到一些模糊效果或者毛玻璃效果,iOS目前已提供一些模糊API可以讓我們方便是使用,本文給大家介紹iOS毛玻璃效果的實(shí)現(xiàn)及圖片模糊效果的三種方法,感興趣的朋友一起學(xué)習(xí)吧2016-01-01IOS開發(fā)之多線程N(yùn)SThiread GCD NSOperation Runloop
這篇文章主要介紹了IOS多線程開發(fā),主要用到NSThiread、GCD、 NSOperation、Runloop,有詳細(xì)的原理解析和實(shí)例代碼,對(duì)多線程感興趣的同學(xué),可以參考下2021-04-04