summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.iOS/Renderers/SwitchRenderer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.iOS/Renderers/SwitchRenderer.cs')
-rw-r--r--Xamarin.Forms.Platform.iOS/Renderers/SwitchRenderer.cs52
1 files changed, 52 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Renderers/SwitchRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/SwitchRenderer.cs
new file mode 100644
index 00000000..0bb7fbef
--- /dev/null
+++ b/Xamarin.Forms.Platform.iOS/Renderers/SwitchRenderer.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Drawing;
+#if __UNIFIED__
+using UIKit;
+
+#else
+using MonoTouch.UIKit;
+#endif
+
+namespace Xamarin.Forms.Platform.iOS
+{
+ public class SwitchRenderer : ViewRenderer<Switch, UISwitch>
+ {
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing)
+ Control.ValueChanged -= OnControlValueChanged;
+
+ base.Dispose(disposing);
+ }
+
+ protected override void OnElementChanged(ElementChangedEventArgs<Switch> e)
+ {
+ if (e.OldElement != null)
+ e.OldElement.Toggled -= OnElementToggled;
+
+ if (e.NewElement != null)
+ {
+ if (Control == null)
+ {
+ SetNativeControl(new UISwitch(RectangleF.Empty));
+ Control.ValueChanged += OnControlValueChanged;
+ }
+
+ Control.On = Element.IsToggled;
+ e.NewElement.Toggled += OnElementToggled;
+ }
+
+ base.OnElementChanged(e);
+ }
+
+ void OnControlValueChanged(object sender, EventArgs e)
+ {
+ ((IElementController)Element).SetValueFromRenderer(Switch.IsToggledProperty, Control.On);
+ }
+
+ void OnElementToggled(object sender, EventArgs e)
+ {
+ Control.SetState(Element.IsToggled, true);
+ }
+ }
+} \ No newline at end of file