即使我设置了数据源、委托,另一个视图的 UIPickerView 属性也没有显示

Posted

技术标签:

【中文标题】即使我设置了数据源、委托,另一个视图的 UIPickerView 属性也没有显示【英文标题】:UIPickerView property of another view not displaying even though I've set datasource, delegate 【发布时间】:2012-05-08 20:37:26 【问题描述】:

我有一个 FilterViewController 充当数据源并代表 UIPickerView 我在模式视图中显示。我的pickerViewFilterActionSheetView 的属性,而FilterActionSheetViewController 又是FilterActionSheetViewController 的属性。

我的代码如下:

    UIPickerView *pickerView = self.customASVC.actionSheetView.pickerView;

    pickerView.delegate = self;
    pickerView.dataSource = self;

    NSLog(@"%@,pickerView);

    [self.tabBarController.view addSubview:self.customASVC.view];
    [self.customASVC viewWillAppear:NO];

但是NSLog() 的结果总是nil,因此我的选择器视图永远不会出现,即使是一个空的选择器视图。我的印象是,只要我设置 pickerView 的数据源并适当地委托它就会显示出来。

【问题讨论】:

customASVC 或 actionSheetView 或 pickerView 为 nil。 【参考方案1】:

customASVC 或 actionSheetView 或 pickerView(作为 actionSheetView 属性的 pickerView)为 nil。将该链分解为单独的语句,看看你在哪里得到一个 nil 值。

【讨论】:

你是对的 - actionSheetView 记录为 (null)。所以,我连接这些人的方式是在我的FilterViewController nib 中添加一个FilterSheetViewController,连接它,然后指定一个自定义的 nib 文件。在那个自定义 nib 文件中,我有一个 view 是透明的,actionSheetView 是 VC 的一个 FilterSheetView 属性,它是 nil 我知道笔尖正在加载,因为它正在渲染一些按钮和图像视图,而不是我的选择器视图。 为什么要在 FilterSheetViewController 的 nib 中添加 FilterSheetViewController?这甚至没有意义。 actionSheetView 是 FilterSheetViewController 的实例吗?如果不是,FilterSheetViewController 与什么有什么关系? customASVC 是什么类? 你为什么要尝试创建一个新的 UIPickerView 基于一些其他类 4 度 Kevin Bacon 远离自我的其他选择器视图?无论如何,您必须在 self 中为 pickerView 提供所有数据,那么为什么不分配/初始化一个新的 UIPickerView 并删除链接点符号的丑陋呢? 我发现在我调用它一次之后(例如在NSLog 中)它在下一次工作。不知道为什么。遵循@jmstone 的建议并将其从点符号链中重构出来。

以上是关于即使我设置了数据源、委托,另一个视图的 UIPickerView 属性也没有显示的主要内容,如果未能解决你的问题,请参考以下文章

如何将另一个 ViewController 设置为 AlertView 的委托

即使在 [[UIPickerView alloc] init] 之后设置了委托,也没有调用 UIPickerView 委托方法

设置UITableView数据源并在单独的文件中委托 - swift

即使我设置了它的委托、数据源并注册了可重用单元格,UITableView 也没有被调用

Swift:我的委托协议方法需要在另一个视图控制器上执行

在 Qt 中使用不同模型访问另一个列表视图的委托中的列表视图模型数据