【问题标题】:Cast to a control using the control name as a string [duplicate]使用控件名称作为字符串转换为控件[重复]
【发布时间】:2012-05-24 11:53:24
【问题描述】:

我的 XIB 中有几个文本字段(和标签),在我的应用程序中的某个时刻,我动态构建了一个包含控件名称的字符串(即其中一个文本字段)。 如何使用我创建的包含文本字段名称的字符串来引用实际的文本字段。

例如,我有 txt1 , txt2, txt3, txt4 作为 UITextFields 我有一个字符串(str),其中包含上述名称之一(str =“txt3”) 然后我想更改 uitextfield txt3 的内容,因为 str 有“txt3” 此时。

如何从字符串转换到实际控件?

【问题讨论】:

    标签: iphone objective-c xcode


    【解决方案1】:

    如果UITextFields 都具有支持属性,那么您可以使用 KVC 获取对控件的引用,然后您就可以正常使用它。

    NSString *str = @"txt1";
    UITextField *myTextField = [self valueForKey:str];
    myTextField.text = @"what ever you want to update to";
    

    旁注

    尽管您没有提到str 的来源@JefferyThomas 提出了一个非常有效的观点,即不信任未经验证的使用输入。

    【讨论】:

    • 我认为重要的是要注意可能不是一个好主意。至少,在开始执行这样的代码之前,您需要严格清除任何用户输入。
    • 我应该澄清一下,这里没有用户参与,应用程序根据一些逻辑构建 str 字段。该字段没有用户输入。感谢您的评论,它按我的意愿工作。!
    • 如果这解决了您的问题,那么只需点击接受答案按钮,人们就会知道解决方案是什么。
    • 嗨,保罗,我没有看到任何“接受答案”按钮,只有“对你有用吗”,我点击了“是”。我错过了什么?
    • @StkStocki - 当我开始使用 SO 时,这也让我感到困惑。要接受答案,请点击答案左上角大量(赞成票)下方显示的复选框。
    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 2015-07-26
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多