我想以不可编辑的方式向我的应用程序的用户显示信息,但允许在按下按钮后编辑(编辑按钮)。有没有办法轻松创建从不可编辑到可编辑的转换?
我已考虑将UILabel
用于不可编辑的字段,并以编程方式删除它们并显示UITextField
。但是,这似乎将很多格式化为代码,我不愿意这样做(以保持IB的优势)。
我还考虑将UILabel
和UITextField
放在我的笔尖的同一个地方,并试图隐藏我不想要的那个。这看起来很不好看。
也许我最好只用两个不同的观点?
对上述方法的任何评论或更好的方法都将非常感激。
答案 0 :(得分:7)
如果将UITextField的enabled属性设置为NO并将borderStyle更改为UITextBorderStyleNone,则文本字段看起来几乎就像UILabel。
也许你想要切换这两个值..这样的事情:
编辑:如果你改变字体,他们看起来就像UILabels。
- (IBAction)toggleEdit:(id)sender {
for (id subview in self.view.subviews) {
if ([subview isKindOfClass:[UITextField class]]) {
BOOL isEnabled = ((UITextField*)subview).enabled;
((UITextField*)subview).enabled = !isEnabled;
if (isEnabled) {
// Disable
((UITextField*)subview).borderStyle = UITextBorderStyleNone;
((UITextField*)subview).font = [UIFont systemFontOfSize:17.0];
}
else {
// Enable
((UITextField*)subview).borderStyle = UITextBorderStyleRoundedRect;
((UITextField*)subview).font = [UIFont systemFontOfSize:12.0];
}
}
}
}
答案 1 :(得分:0)
正如fluchtpunkt回答的那样你也可以这样做。否则,您可以提供一个标签和一个具有相同帧大小的文本字段。在可编辑的true上,您可以隐藏显示文本字段的标签whicle。对于编辑错误,您可以在隐藏文本字段时显示标签。