标签未随选择器视图更新

Posted

技术标签:

【中文标题】标签未随选择器视图更新【英文标题】:label not updating with picker view 【发布时间】:2010-01-10 17:00:39 【问题描述】:

我有一个从数据源中提取的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] 应该可以工作

【讨论】:

他得到了正确的值(“当我将值打印到 NSLog 时,会打印正确的值。”),所以它可能不是问题的根源。 这两个代码中的任何一个都可用于更新 didSelectRow,我将信息打印到 NSLog,我还可以在 UIAlert 消息中显示数据,但我可以将数据“推送”到我的标签.有什么建议吗? 嗯,是的,我建议标签可能不是正确的参考 - 请在此处查看我的答案。 @Henrik:保留文本不正确! UILabel text@property(nonatomic, copy) NSString *text - 无论如何它都被复制了,你只会泄漏内存而不释放它! 是的。可能标签在界面生成器中没有正确连接。【参考方案2】:

如果 NSLog 打印出正确的值,肯定是标签变量有问题。

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

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

【讨论】:

我在 .h 文件中将标签定义为 IBOutlet UILabel *label;然后,我将标签连接到 IB 中“连接”选项卡下定义该标签的类的“出口”选项卡。然后,在 .m 文件中,我在 didSelectRow 中调用我上面编写的代码。我试图逐字复制 UICatalog 示例,但我的标签是在 IB 中构建的。我尝试使用@property 命令和不使用它(我仍然不明白@propery 的作用)。我在 IB builder 中的标签连接错误吗?如果我使用 IBAction 更新文本,则标签会正确更新(但不是动态更新) 你的标签应该是@property (nonatomic, retain) IBOutlet UILabel *label; 然后,在视图的实现中,使用@synthesize label;。在您粘贴的代码中,在label.text = ... 之前,尝试NSLog(@"%@", label) 并发布您得到的内容。

以上是关于标签未随选择器视图更新的主要内容,如果未能解决你的问题,请参考以下文章

选择器视图在选择器视图中显示数字但未在标签上正确显示?

根据其他选择器视图中的选择查看选择器更新

如何在 iOS 中连接选择器视图和标签?

选择器视图 - 文本字段未更新

不显示从标签上的选取器视图中选择的对象

如何根据之前的选择器视图选择更新PickerView 数据