2016-07-05 13 views
-1

Wie erstellt Radio-Button in der xamarin.ios (nativ)? Wir wollen keinen Formularansatz verwenden.Optionsfeld in xamarin.ios

Wir haben versucht, benutzerdefinierte Steuerelement erstellen, aber es funktioniert nicht.

Antwort

3

können Sie diesen Code verweisen:

Diese ViewController.cs ist:

public override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 
     // Perform any additional setup after loading the view, typically from a nib. 

     MyRadioButton rBtn = new MyRadioButton (new CGPoint (50, 50), "RadioButton"); 
     this.Add (rBtn); 
    } 

Dies ist MyRadioButton.cs:

public class MyRadioButton : UIView 
{ 
    private CircleView circleView; 
    private UILabel lbTitle; 

    public bool State { 
     get { 
      return circleView.State; 
     } 
     set { 
      circleView.State = value; 
     } 
    } 

    public MyRadioButton (CGPoint pt,string title) 
    { 
     this.Frame = new CGRect (pt, new CGSize (150, 30)); 
     circleView = new CircleView (new CGRect(0, 0, 30, 30)); 
     lbTitle = new UILabel (new CGRect (30, 0, 120, 30)); 
     lbTitle.Text = title; 
     lbTitle.TextAlignment = UITextAlignment.Center; 
     this.AddSubview (circleView); 
     this.AddSubview (lbTitle); 
     this.BackgroundColor = UIColor.FromRGBA(1,0,0,0.3f); 

     UITapGestureRecognizer tapGR = new UITapGestureRecognizer (() => { 
      State = !State; 
     }); 
     this.AddGestureRecognizer (tapGR); 
    } 
} 

class CircleView : UIView 
{ 
    private bool state = false; 
    public bool State { 
     get { 
      return state; 
     } 
     set { 
      state = value; 
      this.SetNeedsDisplay(); 
     } 
    } 

    public CircleView (CGRect frame) 
    { 
     this.BackgroundColor = UIColor.Clear; 
     this.Frame = frame; 
    } 

    public override void Draw (CoreGraphics.CGRect rect) 
    { 
     CGContext con = UIGraphics.GetCurrentContext(); 

     float padding = 5; 
     con.AddEllipseInRect (new CGRect (padding, padding, rect.Width - 2 * padding, rect.Height - 2 * padding)); 
     con.StrokePath(); 

     if (state) { 
      float insidePadding = 8; 
      con.AddEllipseInRect (new CGRect (insidePadding, insidePadding, rect.Width - 2 * insidePadding, rect.Height - 2 * insidePadding)); 
      con.FillPath(); 
     } 
    } 
} 

Hoffe, dass es Ihnen helfen kann.

+0

Dank @alanc liu. Es hat einige Zeit gedauert, den Radiobutton zu modifizieren und die erforderlichen Ereignisse hinzuzufügen. aber hab es endlich geschafft. Vielen Dank. –

0

In Xamarin IOS haben Sie nur zwei Optionen, wenn es um Radiobuttons geht. Sie können eine Auswahlansicht verwenden, die sich wie Optionsfelder in dem Sinne verhält, dass Sie nur eine Option auswählen können. Wenn Sie jedoch wirklich das Aussehen von Optionsfeldern möchten, können Sie WKWebView verwenden und das Formular in HTML erstellen und dann über einen Codeabschnitt verfügen, der die Status der Optionsfelder aus dem Webview übernimmt und die von Ihnen benötigten Vorgänge ausführt.