2016-09-21 4 views
1

Versuchen Sie, meine Bar-Taste tun 2 Aktionen, wenn es gedrückt wird. Funktioniert es mit "switch" Statements oder wie gehe ich von hier aus?Bar Taste Double Action Swift

Der Code:

@IBAction func Refreshbutton(sender: AnyObject) { 


    switch sender.currentTitle! { 
    case "refresh": 
    Mapview.userTrackingMode = .Follow 

    case "refresh2": 
    Mapview.userTrackingMode = .FollowWithHeading 

    default: break 

    } 

Antwort

1

, dass ein Weg, es zu tun wäre. Es wäre jedoch besser, Ihren Status in der Klasse zu speichern, anstatt den Titel zu verwenden, da er in der Zukunft lokalisiert werden könnte und Sie versuchen sollten, die Benutzeroberfläche von der Logik zu trennen. Man könnte so etwas tun:

var trackingMode = .FollowWithHeading 
@IBAction func Refreshbutton(sender: AnyObject) {  
    trackingMode = trackingMode == .Follow ? .FollowWithHeading : .Follow 
    Mapview.userTrackingMode = trackingMode 
} 

Sie können sich wahrscheinlich die Karte der Unterkunft direkt verwenden:

@IBAction func Refreshbutton(sender: AnyObject) {  
    Mapview.userTrackingMode = Mapview.userTrackingMode == .Follow ? .FollowWithHeading : .Follow 
} 

Als Randnotiz zu geposteten Code, wäre es sparen, wenn Sie

tun würde
switch sender.currentTitle ?? "" { 

statt

switch sender.currentTitle! { 

Auf diese Weise wird die App nicht abstürzen, wenn kein Titel gesetzt ist, es würde nur den Standardfall verwenden.

+0

Danke funktioniert !. – Adam