动态显示/隐藏使用界面生成器创建的 UIPickerView

Posted

技术标签:

【中文标题】动态显示/隐藏使用界面生成器创建的 UIPickerView【英文标题】:Dynamically show/hide a UIPickerView that was created using the interface builder 【发布时间】:2013-12-28 02:33:17 【问题描述】:

我正在尝试创建一个 iPad/iPhone 应用程序,该应用程序根据从 RESTful API 返回的 JSON 对象动态创建菜单。具体来说,我正在尝试显示/隐藏我使用界面生成器创建的 UIPickerView。在界面构建器的属性菜单中,我选中了该 UIPickerView 的“隐藏”框。我用这个tutorial 创建到 UIPickerView。我已经使用界面构建器将委托和数据源设置为视图控制器。当满足特定条件时,我想取消隐藏/显示 UIPickerView。到目前为止,我已经尝试了以下代码:

 [self.choicePicker setHidden:NO];
 self.choicePicker.hidden = NO;

我通常以编程方式构建这样的对象,但我想我会尝试这种方式。我浏览了各种 *** 帖子并进行了研究,但似乎找不到有效的方法。我是 Objective C 编程的新手。在此先感谢任何帮助。

.h文件代码

@interface slrpViewController : UIViewController<UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource>
 

IBOutlet UIPickerView *picker_choice;

NSMutableArray *dataArray;
NSMutableData *receivedData;
 

 @property(nonatomic, strong) UILabel *nameLabel;
 @property(nonatomic, retain) UIPickerView *choicePicker;

.m 文件代码

-(void)buildChoicesMenu:(NSDictionary *)choiceDict
//in this method we build the choices menu

[self.choicePicker setHidden:NO];
self.choicePicker.hidden = NO;
if (self.choicePicker) self.choicePicker.hidden = !self.choicePicker.hidden;

【问题讨论】:

应该可以。那么你会发布一些代码吗? buildChoicesMenu 方法将始终将 self.choicePicker.hidden 设置为 YES... 您是否在其他地方将其设置为 NO? 【参考方案1】:

您定义了两个不同的选择器视图。一个属性choicePicker(和一个隐式_choicePicker 实例变量)和另一个实例变量picker_choice。您似乎已在界面生成器中连接了您的 picker_choice,但正在尝试修改该属性。事实上,如果你尝试在调试器中打印po self.choicePicker,你会得到nil,因为没有填充它。

要么删除实例变量,然后在界面生成器中连接您的属性,或者通过这样做将您的属性与您的实例变量合成:

@syntesize choicePicker=picker_choice

【讨论】:

以上是关于动态显示/隐藏使用界面生成器创建的 UIPickerView的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局并创建动态界面(隐藏字段时自动重新对齐)

mathematica中怎么用if函数控制图形的显示与隐藏

C# 从动态创建的按钮中显示/隐藏动态创建的按钮

在界面生成器中隐藏视图控制器的标签栏

如何显示和隐藏在 vue js 中动态创建的 div(多格式选项卡结构)

动态生成的表单无法正常工作