2016-07-18 6 views
0

私はこのツールバーをナビゲーションコントローラに持っています。今私がしようとしているのは、ユーザがツールバー内の項目(UIBarButtonItem)を選択し、その項目を背景の色で強調表示して、その項目の選択を解除するか、別の項目を選択するまでです。どうすればいい?ここでSwift - UIToolbarアイテムが選択された状態

は、ツールバーの各項目についての私の選択方法です、私は、ストーリーボードを経由して、それらを接続:

@IBAction func addText(sender: AnyObject) { 
     annotationSelected = 3 
} 

@IBAction func drawCircle(sender: AnyObject) { 
    annotationSelected = 1 
} 

@IBAction func drawRectangle(sender: AnyObject) { 
    annotationSelected = 2 
} 

@IBAction func drawStamp(sender: AnyObject) { 
    annotationSelected = 4 
} 

これは私が行っているすべてです。ここに私のツールバーのスクリーンショットです:ここで

enter image description here

は、私が得たものである:

@IBOutlet var textToolButton: UIBarButtonItem! 

    @IBOutlet var circleToolButton: UIBarButtonItem! 

    @IBOutlet var rectangleToolButton: UIBarButtonItem! 

    @IBOutlet var stampToolButton: UIBarButtonItem! 

その後、

textToolButton.target = self 
     textToolButton.style = .Done 
     textToolButton.action = #selector(ViewController.barButtonPressed) 

     let selectedBackgroundColor = UIImage(color: .redColor()) 

     textToolButton.setBackgroundImage(selectedBackgroundColor, forState: UIControlState.Highlighted, style: .Done, barMetrics: UIBarMetrics.Default) 

、その後方法

func barButtonPressed(sender: UIBarButtonItem) { 

     print(sender) 
     annotationSelected = sender.tag 
    } 

バックグラウンド・ラウンドがまだ色を変更していない

答えて

1

同じ質問があります。あなたを助けることができるかもしれません。 custom-pressed-uibarbuttonitem-backgrounds

私は簡単な方法があります。ツールバーにボタンをドラッグすると、このように表示されます。

ボタンのタイプと画像を変更する必要があります。 storyboard screenshot

ボタンをviewControllerにリンクする必要があります。

@IBOutlet weak var textToolButton: UIButton! 

とすることができます。

let selectedBackgroundColor = UIImage(color: .redColor()) 
textToolButton.setBackgroundImage(selectedBackgroundColor, forState: .Highlighted) 

お手伝いできますか?

+0

画像をアップロードできません。私には10の評判がないので。 –

+0

これはUIButtonsではないUIBarButtonItem – user979331

+0

申し訳ありませんが、私の考えを表現することはできません。 UIBarButtonItem * barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:customButton]; この目標を達成するためにcustomButtonを変更することができます。 –

2

あなたがそれを行うことができる最もクリーンな方法は、選択されたボタンを渡す全体的な機能を作成することです。

var allButtons = [button1, button2, button3, button4] 

    func resetTabBar (buttonSelected:UIButton) { 
     for button in allButtons { 
      if button == buttonSelected { 
       button.backgroundColor = "Black" 
      } 
      else { 
       button.backgroundColor = "Blue" 
      } 
     } 

    } 

そして、あなたの機能で作成した、ちょうどそのように、送信者に渡します:

@IBAction func addText(sender: AnyObject) { 

    resetTabBar(sender) 

} 

注:これは、あなたのすべてのボタンのためのコンセントを持っていると仮定している。このような何かそうでない場合は、追加してください。

+0

これはUIBarButtonItemでは機能しません。背景色はありません – user979331

+0

ユースケースとコードが機能しますが、ユーザーは必要に応じてコードを変更できます。 –

関連する問題