UITableViewで削除ボタンを非表示にする権利をスワイプする方法 -- ios フィールド と swift フィールド と uitableview フィールド 関連 問題

How to swipe right to hide delete button in UITableView?












1
vote

問題

日本語

私は現在、テーブルビューセルを左にスワイプしたときに「削除」ボタンを再表示しています。このボタンを同じセルのスワイプで隠したい。それは私が右をスワイプしているように隠すように粘着性になるべきです - ちょうどあなたが左にスワイプしているように「削除」ボタンを表示する方法のように。今、削除ボタンを表示するために左をスワイプしたときに、テーブルビューをスクロールするときにのみ表示されます。このスワイプ右を隠す行動を達成するための組み込み方法はありますか?またはこれはカスタムビルドソリューションである必要がありますか?

編集:私はDefualtメッセージアプリがこの動作をしたと思いましたが、私は正しくスワイプしていたとき、私はテーブルビューを少しスクロールしました。今すぐ隠す唯一の方法は、セルをタップしたり、TableView

をスクロールしています。

次の方法を実装して、Deleteボタンを表示するようにTableViewを設定しました。

<事前> <コード> override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { print("deleted!") } }
英語

I currently have my UITableView revealing the "Delete" button when you swipe left on a table view cell. I want to hide this button with a swipe right on that same cell. It should be sticky too so that it hides as I swipe right - just like how it reveals the "Delete" button as you swipe left. Right now, when I swipe left to reveal the delete button, I can only get it to hide when I scroll my table view. Is there a built-in way to achieve this swipe-right-to-hide behavior? Or does this need to be a custom built solution?

EDIT: I thought the defualt Messages app had this behavior, but I realized that when I was swiping right, I was scrolling the tableview a little bit which caused it to hide. The only way to hide right now is tapping the cell or scrolling the tableview

I've set up my tableView to show the delete button by implementing the following method:

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {    if editingStyle == .delete {         print("deleted!")    }      } 
</div
        
 
 

回答リスト

1
 
vote

ええ、私もユーザーが削除オプションを削除することを許可しようとしている問題がありました。 (Appleのメールアプリの作品と同様)

私が予想通りうまく機能する唯一の方法は、リードリングウィップアクトルを含んでいた場合でした...(ユーザーが最初に右または残しのどちらかが異なるオプションを取得した場合)。もう一方の側を追加すると、ユーザーは削除を消すことができます。

とも「削除をスワイプします」ドープエモソングのように聞こえます。

これは現在、現在完全に機能しているコードです。先行ボタンが右にジャンプしているときに時折のグラフィカルな異常がありますが、私は自分のビューの他のコードが原因である可能性があると思います。このコードは https://chariotsolutions.com /ブログ/ POST / UITATICVIEW-SWIPE-Actions-In-IOS-11 /

<事前> <コード> override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { if indexPath.section == Slider.Section.results.rawValue { return true } else { return false } } override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let favoriteAction = self.contextualToggleFavoriteAction(forRowAtIndexPath: indexPath) return UISwipeActionsConfiguration(actions: [favoriteAction]) } override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let delete = UIContextualAction(style: .destructive, title: "Delete") { (contextAction: UIContextualAction, sourceView: UIView, completionHandler: (Bool) -> Void) in Filter.allMarkers.remove(at: indexPath.row) tableView.deleteRows(at: [indexPath], with: .fade) completionHandler(true) } let share = UIContextualAction(style: .normal, title: "Share") { (contextAction: UIContextualAction, sourceView: UIView, completionHandler: (Bool) -> Void) in print("About to share -> (Filter.allMarkers[indexPath.row].title ?? "")") completionHandler(true) } share.backgroundColor = Color.ocean let swipeConfig = UISwipeActionsConfiguration(actions: [delete, share]) return swipeConfig } func contextualToggleFavoriteAction(forRowAtIndexPath indexPath: IndexPath) -> UIContextualAction { let marker = Filter.allMarkers[indexPath.row] let action = UIContextualAction(style: .normal, title: "Favorite") { (contextAction: UIContextualAction, sourceView: UIView, completionHandler: (Bool) -> Void) in if marker.toggleFavoriteFlag() { completionHandler(true) } else { completionHandler(false) } } //action.image = UIImage(named: "flag") action.backgroundColor = marker.isFavorite ? Color.magenta : UIColor.gray return action }
 

Yeah, I too was having an issue trying to allow users to swipe away the Delete option. (Similar to how Apple's Mail app works)

The only way I found it to work as expected was if you also include a leadingSwipeAction... (If the user initially swipes either right or left they get different options). Once you add the other side, then users can swipe the Delete away.

Incidentally "Swipe the Delete Away" sounds like a dope emo song.

Here is code I currently have that is almost working perfectly. There is an occasional graphical anomaly with the leading button jumping to the right, but I think that might be due to some other code in my view. This code is borrowed heavily from https://chariotsolutions.com/blog/post/uitableview-swipe-actions-in-ios-11/

    override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {      if indexPath.section == Slider.Section.results.rawValue {         return true     } else {         return false     }  }  override func tableView(_ tableView: UITableView,                         leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {      let favoriteAction = self.contextualToggleFavoriteAction(forRowAtIndexPath: indexPath)      return UISwipeActionsConfiguration(actions: [favoriteAction])  }  override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {       let delete = UIContextualAction(style: .destructive,                                     title: "Delete") { (contextAction: UIContextualAction, sourceView: UIView, completionHandler: (Bool) -> Void) in                                          Filter.allMarkers.remove(at: indexPath.row)                                         tableView.deleteRows(at: [indexPath], with: .fade)                                         completionHandler(true)      }      let share = UIContextualAction(style: .normal,                                     title: "Share") { (contextAction: UIContextualAction, sourceView: UIView, completionHandler: (Bool) -> Void) in                                          print("About to share -> (Filter.allMarkers[indexPath.row].title ?? "")")                                         completionHandler(true)      }      share.backgroundColor = Color.ocean      let swipeConfig = UISwipeActionsConfiguration(actions: [delete, share])     return swipeConfig }   func contextualToggleFavoriteAction(forRowAtIndexPath indexPath: IndexPath) -> UIContextualAction {      let marker = Filter.allMarkers[indexPath.row]     let action = UIContextualAction(style: .normal,                                     title: "Favorite") { (contextAction: UIContextualAction, sourceView: UIView, completionHandler: (Bool) -> Void) in                                         if marker.toggleFavoriteFlag() {                                             completionHandler(true)                                         } else {                                             completionHandler(false)                                         }     }      //action.image = UIImage(named: "flag")     action.backgroundColor = marker.isFavorite ? Color.magenta : UIColor.gray     return action } 
</div
 
 

関連する質問

7  UitabbarControllerの内部のUInavigationControllerに関する問題、ViewWillAppearが呼び出されません  ( Problems with uinavigationcontroller inside of uitabbarcontroller viewwillappea ) 
概要として、ビューがスタックからポップされるたびに、viewWillAppearを呼び出すUITabBarControllerの内部にあるUinavigationControllerに関する問題があります。 デリゲートから、UitabbarControlle...

0  CellForRowAtIndexPathが遅すぎると呼びました  ( Cellforrowatindexpath called too late ) 
Webから取得するデータをたびにテーブルを再ロードしようとしています。これが私が持っているものです: <前> SearchDataViewController: <コード> - (void)parseDataXML { parsingDelegat...

5  UITableViewにカスタムEditingAccessoryViewを追加する方法  ( How to add custom editingaccessoryview for uitableview ) 
セルにカスタムeditingAccessoryViewを追加したい場合は、削除ボタンの代わりにユーザースワイプすると、カスタムビューを表示します。 ...

1  iPhoneアプリでuibiteviewsのデータを取得するためのどのコントローラですか?  ( Which controller to get data for uitableviews in iphone app ) 
私は顧客のテーブルビューを備えたCoustauctionViewControllerを持っています。顧客(DidSelectrowatIndexPath)をクリックすると、OrdereViewControllerがその顧客の注文の表ビューを表示します。私は今の...

4  Interface Builderでめちゃくちゃにすることなく変換で和解を正しく回転させる  ( Correctly rotating a uitableview with transform without messing around with inte ) 
uibiteviewは横長モードで水平スクロールを提供しません。 私のUibleViewはフルスクリーンではありません(私のコンテンツを回転しながら水平モードを使用することはできません。) 私はトランスフォームを使って私の不気味なビューを回転させることがわか...

1  UITableViewStyleGrouped TableViewsのセルのカスタム幅  ( Custom width for cell in uitableviewstylegrouped tableviews ) 
iPhone SDKでは、UiveViewStyleGroungedのスタイルを持つテーブルビュー内のセルの幅をカスタマイズする方法はありますか? 問題は、Cell.BackgroundViewのカスタム背景画像(290pxの幅290px)を使用しているが、...

0  UITableViewControllerのセクションヘッダーの背景画像を使用する方法?  ( How to use an background image for the section header in the uitableviewcontroll ) 
こんにちは 私はUITEMITVERCOTROLLERを持っています。ここで、セクションヘッダーも使用しています。 今すぐ画像をバックグラウンドとして使用する機会はありますか? ありがとう ...

7  グループ化されたUITableViewCellのコントロールを並べ替えるのに白い線を取り除く  ( Remove white line next to reorder control on grouped uitableviewcell ) 
私は、より暗いUIとカスタムAccessoryViewを持つテーブルのためのカスタムUIを構築しました。テーブルを編集モードに入れると、除去されていないように見えないように見えるコントロールの左側に白い線があります。 TableView:abseoRyt...

3  カスタムUiveViewCellの背景は選択後に透明になります  ( Custom uitableviewcell background goes transparent after selection ) 
<コード> UITableView プレーンスタイルテーブルのカスタムセルの1つを選択して保持するときは、カスタム選択色(<コード> redColor )を表示しますが、次に、カスタム選択カラーとを押し続けている場合、カスタムの背景は消えます(表の後ろの<コ...

15  UITableViewControllerを使用したUiableViewサブクラスを使用する  ( Using a uitableview subclass with a uitableviewcontroller ) 
通常の UITableView tableView のマイカスタム<コード> 99887661 サブクラスを使用するように私の $(document).ready に指示する方法>? ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有