我现在在视图中有一个特定的任务:我在视图中显示一些可能有一组属性的项目。视图本身仅适用于一个项目。其中一个项目可能有一组或多组属性,我想显示和/或提供用户输入的可能性。 我为一组包含三个UITextField的属性定义了一个xib。在应该显示之前,我将属性的数据加载到数组中。然后,根据数组的长度,我想显示子视图。 目前,我试着这样做:
- (void) showSites:(NSArray *)sites hiddenMode:(BOOL)hidden
{
for (int i = 0; i < [sites count]; i++)
{
int h = 420 + i * 30;
UIView *siteView = [[[NSBundle mainBundle] loadNibNamed:@"SiteView" owner:self options:nil] objectAtIndex:0];
[self.view addSubview:siteView];
siteView.frame = CGRectMake(10, h, 760, 52);
}
}
不幸的是,这会抛出一个NSUnkownKeyException,原因如下:'[setValue:forUndefinedKey:]:这个类与key areaField不符合密钥值编码。 areaField是一个UITextField,我在xib中定义。它也被定义为视图类的heade文件,如:
@property (nonatomic, strong) IBOutlet UITextField *areaField;
我担心,在我解决了当前问题之后,下一个问题将出现:如何访问UITestfields进行阅读和/或编辑...... 有谁知道解决方案?
答案 0 :(得分:0)
问题1:您的方法不使用sites
数组。它只使用它的计数。我认为这是一个错误。
问题2:hidden
参数也根本没用过。
问题3:您的班级似乎没有准备好成为这些视图的“文件所有者”。我怀疑它应该是。 (多个视图如何将不同的文本字段绑定到同一个变量?)
问题4:您只有一个UITextField
属性,但可能是无限量的文本字段。
摘要:您的代码设计已损坏,您必须从头开始重新设计。
答案 1 :(得分:0)
如果您已将名为areaField的UITextField连接到IBOutlet属性,则可以使用self.areaField.text
在相应的ViewController中读取/写入其内容。关于当前问题,请检查故事板中的连接。转到Connections Inspector并确保引用插座与.h文件中的插座属性名称相同。
答案 2 :(得分:0)
只需以编程方式创建文本字段:
for (int idx = 0; idx < [sites count] ; idx ++)
{
UITextField *textField = [[UItextField alloc]initWithFrame:CGRectMake(10, 420 + idx * 30, self.view.frame.size.width-20, 25)];
textField.tag = idx;
textField.delegate = self;
[self.view addSubview:textField];
}
然后,您可以通过其标记或其代理来访问textField。