2017-12-01 11 views
-1

「削除」ボタンが表示されているときにカスタムナビゲーションバーボタンのタイトルを変更するにはどうすればよいですか編集中のテーブル行のタップまたはディスエーブルのどちらかですか?テーブル行の「削除」ボタン(タップまたはスワイプの後に表示される)がタップまたは解除されたときにカスタムナビゲーションバーボタンのタイトルを設定する

ボタンは「editBarButton」です。これはカスタムナビゲーションバーボタンです。最初のタイトルは「編集」です。テーブルが非編集モードのときは「編集」のままでなければならず、テーブルが編集モードのときは「完了」に変更する必要があります。したがって、「削除」が表示されるように表の行をスワイプすると、「editBarButton」のタイトルは「完了」でなければなりません。 「削除」がタップまたはディスミングされた場合(すなわち、「削除」ボタン以外の場所で削除された行をタップすることによって解消された場合)、タイトルが編集モードを離れるときには「編集」でなければならない。下のコードを使用すると、行をスワイプして「削除」が表示されたときに、タイトルが「完了」に変わります。しかし、私はそれが再び "編集"タイトルを持つ方法を見つけることができません。

以下に示すように、 "editBarButton"は@IBAction func editBarButtonIsPressed(_ sender:Any)で接続されています。そのため、ボタンがタップされるたびに、タイトルが変更されます(tableView.isEditingの値も変更されます)。スワイプがテーブルの行に適用されると、そのタイトルも「完了」に設定されます。しかし、「削除」ボタン(スワイプの後に表示される)がタップまたはディスマウトされたときにタイトルを「編集」に戻す方法を見つけることができません。

@IBAction func editBarButtonIsPressed(_ sender: Any) 
{ 
    if tableView.isEditing { editBarButton.title = "Edit" } 
    else { editBarButton.title = "Done" } 
    tableView.setEditing(!tableView.isEditing, animated: true) 
} 



override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle 
{ 
    editBarButton.title = "Done" 
    return .delete 
} 

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) 
{ 

    if editingStyle == .delete 
    { 
     //here, the element of the array that is presented in the relevant row of the table, is deleted, as well as the row 
    } 
} 
+0

あなたがしようとしていることを正確に説明してください。あなたが試したことを示してください。私たちはあなたが話していることを知るために例を示します。 – creeperspeak

+0

どのボタンを参照していますか?関連するコードで質問を更新してください。助けが必要な場所を明確に示します。 – rmaddy

+0

コメントを投稿しないでください。あなたの質問を関連するすべての詳細で[編集]してください。 – rmaddy

答えて

0

私は答えを見つけました。次の機能を使用する必要があります。

override func tableView(_ tableView: UITableView, didEndEditingRowAt indexPath: IndexPath?) 
{ 
    editBarButton.title = "Edit" 
} 
関連する問題