为啥我的 UIPickerView 在选择时崩溃

Posted

技术标签:

【中文标题】为啥我的 UIPickerView 在选择时崩溃【英文标题】:Why does my UIPickerView crashing when selecting为什么我的 UIPickerView 在选择时崩溃 【发布时间】:2012-05-24 19:45:52 【问题描述】:

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

当点击一行或试图在 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;
    

我不知道为什么它总是崩溃,是我在模型中缺少某种方法还是我试图以错误的方式做到这一点?

谢谢

【问题讨论】:

请添加一些有关崩溃本身的信息,例如堆栈跟踪。 【参考方案1】:

尝试将您的catPicker 设为类的私有变量:

namespace TextfieldUIPickerView

    public partial class TextfieldUIPickerViewViewController : UIViewController
    
        private UIPickerView catPicker;
 ...

看起来 GC 已经收集并处理了你的 catPicker。

【讨论】:

以上是关于为啥我的 UIPickerView 在选择时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

当我在明确选择一行之前选择 UIPickerView 上的“完成”按钮时,应用程序崩溃

在 iOS 8 中使用 UIPickerview 作为 UITextfield 的输入视图时崩溃

滚动 UIPickerView 上的应用程序崩溃

当我在 Swift 中从音乐库中选择歌曲时,为啥我的应用程序会崩溃?

如何将 UIPickerView 重置为索引:0,iPhone

Swift UIPickerView 最后一列数据导致致命崩溃