2011-12-02 31 views
5

Sử dụng MonoTouch.dialog tuyệt vời trong một số dự án của tôi ngay bây giờ và có một câu hỏi. Tôi có một RadioGroup mà tôi sử dụng để cho phép người dùng chọn trạng thái chủ của mình, Hoa là một mảng chuỗi.Loại bỏ cửa sổ bật lên khi mục Nhóm RadioGroup được chọn

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

Điều này hoạt động tốt và khi tôi chọn trạng thái bật lên và tôi chọn trạng thái của mình, nhưng sau đó tôi phải nhấn nút quay lại trên thanh điều hướng để quay lại màn hình chính. Có cách nào để loại bỏ cửa sổ bật lên đó khi tôi chọn một lựa chọn không? Có để nhấn nút quay lại là gây phiền nhiễu. Hoặc tôi chỉ sử dụng giải pháp sai cho điều này hoàn toàn?

Suy nghĩ đầu tiên của tôi là phân lớp RadioElement và nắm bắt sự kiện đã chọn, nhưng sau đó tôi vẫn không chắc chắn cách loại bỏ cửa sổ bật lên lựa chọn tự động?

Trả lời

13

Tôi đã gặp sự cố tương tự sáng nay và tôi cũng muốn kích hoạt sự kiện thay đổi để tôi có thể thêm nút "hủy" trên hộp thoại khi dữ liệu đã được chỉnh sửa. Cả hai nhiệm vụ yêu cầu bạn phân lớp RadioElement và ghi đè phương thức Selected - lưu ý bước bổ sung để đảm bảo hộp thoại KHÔNG đóng nếu người dùng nhấp vào mục đã chọn - nó sẽ kích hoạt nếu bạn nhấp vào bất kỳ thứ gì ngay cả khi nó đã được chọn vì vậy tôi muốn bảo vệ chống lại điều đó - của tôi trông như thế này.

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

Bạn là người đàn ông! Cám ơn rất nhiều. Tôi đã gần, đó là cách để đóng hộp thoại mà tôi đã mất tích. Đây chính xác là những gì tôi cần. – russellj

+0

Tuyệt vời. Tôi nghĩ rằng tôi có thể sử dụng điều này là tốt: P. russellj bạn có thể đánh dấu đây là câu trả lời được chấp nhận không? – Bart

Các vấn đề liên quan