2

我在 github Github 链接上创建了一个示例

当单击一行或尝试在 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 回答