2011-12-02 12 views
5

私のプロジェクトのいくつかですばらしいMonoTouch.dialogを使用して質問があります。私はユーザーが自宅の状態を選択できるようにするRadioGroupを持っています。状態は文字列配列です。ラジオグループの項目を選択したときにポップアップを消す

public static RootElement CreateStates() 
    { 
     return new RootElement ("State", new RadioGroup (0)) 
     { 
      new Section ("Choose State") 
      { 
       from x in States 
        select (Element) new RadioElement (x) 
      } 
     }; 
    } 

これは正常に動作し、私は状態を選択したときにポップアップが表示され、私は私の状態を選ぶが、その後、私は戻って私のメイン画面に取得するにはナビゲーションバーの[戻る]ボタンを押さなければなりません。選択したときにそのポップアップを閉じる方法はありますか?戻るボタンを押すことは迷惑です。あるいは、私はこれに間違った解決法を使っていますか?

私の最初の考えはRadioElementをサブクラス化し、選択したイベントをキャッチすることでしたが、それでも自動選択ポップアップを却下する方法がわかりませんでしたか?

答えて

13

私は今朝同じ問題に遭遇しました。また、変更のイベントをトリガーしたいので、データが編集されたときにダイアログに「キャンセル」ボタンを追加することができました。どちらのタスクでも、RadioElementをサブクラス化してSelectedメソッドをオーバーライドする必要があります。ユーザーがすでに選択したアイテムをクリックしたときにダイアログが閉じることがないようにするための追加ステップに注意してください。それから守る - 私のように見えるこの。

public class MyRadioElement : RadioElement { 
    // Pass the caption through to the base constructor. 
    public MyRadioElement (string pCaption) : base(pCaption) { 
    } 

    // Fire an event when the selection changes. 
    // I use this to flip a "dirty flag" further up stream. 
    public override void Selected (
     DialogViewController pDialogViewController, 
     UITableView pTableView, NSIndexPath pIndexPath) { 
     // Checking to see if the current cell is already "checked" 
     // prevent the event from firing if the item is already selected. 
     if (GetActiveCell().Accessory.ToString().Equals(
      "Checkmark",StringComparison.InvariantCultureIgnoreCase)) { 
      return; 
     } 

     base.Selected (pDialogViewController, pTableView, pIndexPath); 

     // Is there an event mapped to our OnSelected event handler? 
     var selected = OnSelected; 

     // If yes, fire it. 
     if (selected != null) { 
      selected (this, EventArgs.Empty); 
     } 

     // Close the dialog. 
     pDialogViewController.DeactivateController(true); 
    } 

    static public event EventHandler<EventArgs> OnSelected; 
} 
+0

あなたは男です!本当にありがとう。私は近くにいた、それは私が行方不明だったダイアログを閉じる方法でした。これはまさに私が必要としていたものです。 – russellj

+0

素晴らしい。私はこれも使うことができると思う:P。 russelljあなたはこれを受け入れられた答えとしてマークできますか? – Bart

関連する問題