动态显示/隐藏使用界面生成器创建的 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的主要内容,如果未能解决你的问题,请参考以下文章