2

githubGithubリンクでサンプルを作成しました

行をクリックするか、UIPickerViewをスクロールしようとすると、クラッシュし、なぜだろうと思います。

// create a ActionSheet
var actionPickerSheet = new UIActionSheet("Select a Category");
actionPickerSheet.Style = UIActionSheetStyle.BlackTranslucent;
// Create UIpickerView
var catPicker = new UIPickerView(){
    Model = new catPickerModel(),
    AutosizesSubviews = true,
    Hidden = false,
    ShowSelectionIndicator = true
};
// show inside view and add the catPicker as subView
actionPickerSheet.ShowInView(View);
actionPickerSheet.AddSubview(catPicker);
// resize both views so it fits smoothly
actionPickerSheet.Frame = new RectangleF(0,100,320,500);
catPicker.Frame = new RectangleF(actionPickerSheet.Frame.X,actionPickerSheet.Frame.Y-25,actionPickerSheet.Frame.Width, 216);

そしてモデル

private class catPickerModel : UIPickerViewModel
{
    public string[] protocolNames = new string[]
    {
        "Web", "Phone Call", "Google Maps", "SMS", "Email"
    };

    public override int GetComponentCount(UIPickerView uipv)
    {
        return 1;
    }

    public override int GetRowsInComponent( UIPickerView uipv, int comp)
    {
        //each component has its own count.
        int rows = protocolNames.Length;
        return(rows);
    }

    public override string GetTitle(UIPickerView uipv, int row, int comp)
    {  
        //each component would get its own title.
        return protocolNames[row];
    }

    public override void Selected(UIPickerView uipv, int row, int comp)
    {
        Console.WriteLine("selected:" + row);
    }

    public override float GetComponentWidth(UIPickerView uipv, int comp)
    {
        return 300f;
    }
}

なぜそれがクラッシュし続けるのか分かりません、それは私がモデルに欠けているいくつかの方法ですか、それとも間違った方法でこれを行おうとしていますか?

ありがとう

4

1 に答える 1

3

catPickerクラスのプライベート変数を作成してみてください。

namespace TextfieldUIPickerView
{
    public partial class TextfieldUIPickerViewViewController : UIViewController
    {
        private UIPickerView catPicker;
 ...

GCがcatPickerを収集し、破棄したようです。

于 2012-05-24T20:26:04.683 に答える