【问题标题】:Unable to Generate UITextField dynamically in place of UILabel?无法动态生成 UITextField 来代替 UILabel?
【发布时间】:2011-11-21 04:21:23
【问题描述】:
我正在尝试动态生成 UITextField 来代替 UILabel。
现在我想更新该数据。
我在 UILabel 中显示来自数据库的数据,并且有一个 UIButton 用于编辑。
当我单击那个 UIButton 时,应该生成 UITextField 来代替 UILabel,并且数据也应该显示在 UITextField 中。
【问题讨论】:
标签:
iphone
objective-c
ios
cocoa-touch
【解决方案1】:
您可以做的是设计一个包含所有文本字段的视图,该视图在两种模式下工作,第一种是只读的(通过将 userInteraction 设置为 false ),第二种是编辑模式。这样可以避免使用标签。对于所有字段,这将只需要一个编辑按钮。如果你仍然想坚持你的方法,你可以隐藏标签,使用它们的框架在它们的位置创建文本字段,只要你在编辑模式下工作就可以让它们可见。不要忘记使用
[self.view bringSubviewToFront:TEXT_FIELD];
当您将它们添加到您的视图时。
e
使用我前面提到的方法管理编辑更容易,并且需要更少的努力。希望对你有帮助
【解决方案2】:
您需要在 .h 文件中实现此文本字段,以便在完成编辑后访问它。然后,在您的按钮回调中:
textField = [[UITextField alloc] initWithFrame:[yourUILabel frame]];
[textField setText:yourUILabel.text];
[self.view addSubView:textField];
然后,将其替换回来:
[yourUILabel setText:textField.text];
[textField removeFromSuperView];
【解决方案3】:
您可以使用其他人在此处描述的方法,但听起来您只想要一个看起来像标签的 UITextField 并且您想控制它是否可编辑。
- 根据您是否希望用户编辑 UITextField 将启用设置为 YES / NO
- 设置 UITextField 的边框样式(通常在 UITextBorderStyleRoundedRect 和 UITextBorderStyleNone 之间)
然后您可以按如下方式切换 enabled 和 borderStyle 值:
- 在初始视图上:启用:否,边框样式:UITextBorderStyleNone
- 点击按钮:启用:是,边框样式:UITextBorderStyleRoundedRect
这样,您不必弄乱视图层次结构并担心框架等。