【问题标题】:How to find text of UILabel which is set in Interface Builder?如何查找在 Interface Builder 中设置的 UILabel 的文本?
【发布时间】:2013-01-09 12:54:14
【问题描述】:

我有UILabel *lblTest。我在Interface Builder 中将此标签的文本设置为“测试”。

现在我通过代码将 lblTest 文本设置为“新测试”。

所以现在我想再次获取我已经在Interface Builder 中设置的“测试”文本。

有没有办法巧妙地做到这一点?

注意:我对行代码数不感兴趣.... 期待单线解决方案。

提前致谢。

【问题讨论】:

  • 如果您通过 viewdidload 中的代码设置标签文本“新文本”,那么它将始终显示“新文本”,除非您将标签文本指定为“测试”或注释您的行
  • 您用“新测试”覆盖“测试”并想找到之前设置的“测试”?您需要返回多少次迭代?你可以使用 .placeholder 作为初始字符串吗?
  • @:Bejmax 我期待这样的代码 "[NSString stringWithFormat:@"%@",(NSString *)[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]]"
  • 也许你可以告诉我们你想做什么?
  • 它不必像你说的那样“聪明”。但是,请继续期待“单线”解决方案。我相信这将是一段非常漂亮和智能的代码。

标签: iphone ios uilabel


【解决方案1】:

您必须了解 Interface Builder 中的值将被您自己编写的代码覆盖。

因此,一旦您的代码更改了标签,您就可以恢复 Interface Builder 的值,例如:

NSString* lblTestString = lblTestString.text;

//now set your value from the code
[lblTest setText:@"new Test"];

//and revert it to what was already in the interface builder
[lblTest setText:lblTestString];

但它真的没有任何意义..

【讨论】:

  • 我已经考虑过最后一种方法。但我期待单线解决方案。
【解决方案2】:

我猜你想要类似“撤消”功能的东西。 没有特殊的方法可以做你描述的事情。 您可以做的一件事是:

  1. 在将标签文本设置为“新测试”之前,将第一个字符串存储在 NSString 变量中

    NSString *oldString = lblTest.text;
    
  2. 从代码中更改文本。

    self.lblTest.text = @"new test";
    
  3. 如果需要,将其改回旧字符串。

    self.lblTest.text = oldString;
    

【讨论】:

    猜你喜欢
    • 2015-02-10
    • 2011-03-26
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多