2010-10-16 2 views
7

Я хотел бы предоставить информацию о своем приложении незаменимым способом, но разрешить редактирование после нажатия кнопки (кнопки редактирования). Есть ли способ легко создать этот переход от нередактируемого до редактируемого?Предоставление редактируемых и редактируемых полей на iPhone

Я рассмотрел использование UILabel s для не редактируемых полей и программного их удаления и показывая UITextField s. Однако это, похоже, придало бы большое значение форматированию кода, который я бы предпочел не делать (чтобы сохранить преимущества IB).

Я также рассмотрел наличие и UILabel, и UITextField там же в моем наконечнике и попытке скрыть тот, который я не хочу. Это кажется довольно взломанным.

Может быть, мне просто будет лучше с двумя отдельными видами?

Любые комментарии к вышеуказанным методам или более эффективные способы сделать это будут очень оценены.

ответ

7

Если вы установили свойство enabled UITextField в NO и измените borderStyle на UITextBorderStyleNone, ваше текстовое поле выглядит почти как UILabel. Возможно, вы хотите переключить эти два значения .. Что-то вроде этого:
EDIT: И если вы измените шрифт, они выглядят точно так же, как 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]; 
      } 
     } 
    } 
} 
+0

Блестящий, спасибо. Я попробовал «textField.enabled» для этого эффекта, но я думаю, что делал это слишком рано. С границей и шрифтом также отлично работает. * И * Я узнал о self.view.subviews! – mmdeas

0

Как ответен fluchtpunkt, вы также можете сделать это. В противном случае вы можете предоставить одну метку и одно текстовое поле с одинаковым размером кадра. И на редактируемой истине вы можете скрыть ярлык, отображающий текстовое поле. А для редактирования false вы можете показать ярлык, скрывая текстовое поле.

Смежные вопросы