2016-10-20 12 views
0

実行時にUIBarButtonItemテキストを「きれいに」変更して、編集/完了モードを切り替えることができます。しかし、ランタイム中にtitle属性を変更するたびに、アニメーションが不器用になります。連絡先アプリの編集/完了ボタンの外観と機能をエミュレートするために探しています(編集が単純に消えて、その場所に完了が表示されます)。実行時にUIBarButtonItemテキストを「きれいに」変更する(編集 - >完了 - >編集)?

@IBAction func editDoneButtonPressed(sender: UIBarButtonItem) { 

    if(sender.title == "Edit"){ 
     sender.title = "Done" 
    }else{ 
     sender.title = "Edit" 
    } 

} 

初期設定:識別子が「カスタム」に設定されており、タイトルは「編集」

シンプルprogramaticalソリューションは、しかし、アニメーションの外観は確かに最も重要である、好まれるように設定されています。私は、テキスト属性ではなく、UIBarButtonItem識別子を切り替えることを検討したいと思いますが、ランタイム中に識別子を切り替えるためのエレガントな方法は不明です。

私はアプリを構築するためにスイフトを使用しています。

リンクへ...連絡先アプリの編集の

スクリーンキャスト/アニメーショントグル完了:私の編集の https://youtu.be/5mT_vzpNhIw

スクリーンキャスト/アニメーショントグル完了:https://youtu.be/mEweotJNVNE

はありがとうございます。

+0

表示:

その後、代わりに独自のアクションを設定するのは、単にsetEditing(_:animated:)メソッドをオーバーライドします。 – rmaddy

+0

編集ボタンの作成と設定に使用したコードで質問を更新する必要があるということです。 – rmaddy

+0

編集ボタンの設定にコードが使用されていません。ナビゲーションバーにドラッグアンドドロップされました。ありがとうございました。 – HumbleOne

答えて

2

編集/完了ボタンを表示するには、標準的な方法があります。

UIViewControllerは、既にビューコントローラのeditingプロパティにフックされている標準の編集/完了ボタンを提供します。次のように

一般的な使用法は次のとおりです。あなたが実際にそれを必要な場所

self.navigationItem.rightBarButtonItem = editButtonItem 

editButtonItemを置く:あなたのビューコントローラのviewDidLoadメソッド内

は、標準のボタンを使用します。どのようにセットアップ、このバーボタンアイテム

override func setEditing(_ editing: Bool, animated: Bool) { 
    super.setEditing(editing, animated: animated) 

    if (editing) { 
     // user just tapped the Edit button (it now says Done) 
    } else { 
     // user just tapped the Done button (it now says Edit) 
    } 
} 
+0

1.この標準化されたボタンをナビゲーションバーに追加できますか? – HumbleOne

+0

2.これは私が遭遇したちょっとしたアニメーションをクリアーしますか? – HumbleOne

+0

1.それは私の答えのコードがしているものです。これは、ナビゲーションバーの右側にボタンを追加します。 2.最も可能性が高い。これは 'setEditing'メソッドの中で何をするかによって異なります。 – rmaddy

関連する問題