2015-05-30 5 views
14

Ich habe eine HMSegmentedControl mit 4 Segmenten. Wenn es ausgewählt ist, sollte es Pop-up-Ansicht sein. Und wenn das Pop-up abgewiesen wird und versucht wird, auf denselben Segmentindex zu klicken, sollte das Pop-up erneut angezeigt werden. Bei Verwendung von following hat keine Aktion beim Klick auf den gleichen Segment-Index nach dem Popup Dismissed.Swift Handle Aktion auf segmentierte Steuerung

segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents: UIControlEvents.ValueChanged) 
+0

betrachten diese statt http : //stackoverflow.com/questions/1620972/uisegemedcontrol-register-taps-on-sected-segment – Gerald

Antwort

9

Sie legen Ihr Ziel nur, wenn die Wertänderung zu feuern, wenn Sie also das gleiche Segment der Wert auswählen wird sich nicht ändern und die popover wird nicht angezeigt, versuchen, das Ereignis zu TouchUpInside zu ändern, so wird es sein, wird jedes Mal ausgelöst, wenn Sie das Segment berühren

segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside) 
+1

Ich habe dies bereits versucht, indem Sie TouchUpInside-Ereignis verwenden. Aber es funktioniert nicht. Während der Verwendung tritt kein Ereignis auf. – Poonam

+1

hast du versucht .AllEvents auch? – Icaro

+0

Danke ... Es funktioniert gut. :) – Poonam

17

Sie können dasselbe Ziel für mehrere Ereignisse hinzufügen.

können also sagen, dass Ihre segmentedControlValueChanged: wie folgt aussieht:

func segmentedControlValueChanged(segment: UISegmentedControl) { 
    if segment.selectedSegmentIndex == 0 { 
    } 
    ... 
} 

Dann können Sie hinzufügen Ziele für mehr als 1 Ereignisse diese Funktion aufzurufen:

segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.ValueChanged) 
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside) 

Jetzt wird Ihre Funktion aufgerufen werden, wenn ein Wert wurde geändert und wenn der Benutzer seinen Finger freigibt.

9

mit swift3 verwenden Sie es auf diese Weise:

mit Absender, verwenden Sie den Absendernamen Absender, wenn Sie in der Aktion zugreifen möchten:

segmentControl.addTarget(self, action: #selector(changeWebView(sender:)), for: .valueChanged) 

oder

addTarget(self, action: #selector(changeWebView), for: .valueChanged) 
Verwandte Themen