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

时间:2013-12-28 02:33:18

标签: ios objective-c uipickerview

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

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

我通常以编程方式构建这样的对象,但我想我会这样尝试。我正在浏览各种stackoverflow帖子并进行研究,但我似乎找不到有用的东西。我是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;
}

1 个答案:

答案 0 :(得分:1)

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

删除实例变量,并在界面构建器中连接属性,或者通过这样做将属性与实例变量合成:

@syntesize choicePicker=picker_choice