2010-01-10 23 views
1

我有一个pickerview从数据源拉。我有代码更新didSelectRow函数中的标签,但标签不更新。当我将值打印到NSLog时,将打印适当的值。有没有什么特别的我需要做的连接标签,以便它在didSelectRow发送时更新?标签不与更新选择器视图

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ 
if (pickerView.tag == TagLensPicker){ 
    [self lensArrayData]; 
    label.text = [NSString stringWithFormat:@"%@",[description objectAtIndex:[pickerView selectedRowInComponent:0]]]; 
    NSLog([NSString stringWithFormat:@"%@", [description objectAtIndex:[pickerView selectedRowInComponent:0]]]); 

} 

}

回答

1
[pickerView selectedRowInComponent:0] 

可能是你的问题的根源。

[description objectAtIndex:row]应该工作

+0

他正在得到正确的值(“当我将值打印到NSLog时,会打印正确的值。”),所以它可能不是问题的根源。 – 2010-01-10 17:32:17

+0

这两个代码都可以用来更新didSelectRow,我有打印到NSLog的信息,我也可以在UIAlert消息中显示数据,但我可以将数据“推送”到我的标签。有什么建议么? – Michael 2010-01-10 17:33:33

+0

嗯,是的,我建议标签可能不是一个正确的参考 - 请参阅我的答案在这里的某处。 – 2010-01-10 17:49:02

0

如果NSLog的打印正确的值,都必须有标签变量的一个问题。

使用NSLog打印它,看看它是否是你的标签的正确引用?

另外,您也可以在更改文字后尝试拨打[label setNeedsDisplay],尽管我不确定是否有必要。

+0

我在.h文件中定义了标签 IBOutlet UILabel * label; 然后,我将标签连接到标签所在类的Connections选项卡下的IB的“Outlets”选项卡中。然后,在.m文件中,我调用上面在didSelectRow中编写的代码。我试图复制verbatum的UICatalog示例,除了我的标签是在IB中构建的。我尝试使用@property命令而没有它(我仍然不明白@propery的作用)。 我是否在IB生成器中连接了错误的标签?如果我用IBAction更新文本,那么标签更新正确(但不是动态的) – Michael 2010-01-12 11:00:46

+0

您的标签应该是@ @属性(非原子,保留)IBOutlet UILabel * label;'然后,在视图的实现中,使用' @synthesize标签;'。在你粘贴的代码中,在'label.text = ...'之前,尝试'NSLog(@“%@”,label)'并发布你的内容。 – 2010-01-12 11:07:13