标签未随选择器视图更新
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)
并发布您得到的内容。以上是关于标签未随选择器视图更新的主要内容,如果未能解决你的问题,请参考以下文章