2010-10-16 3 views
7

내 앱 사용자에게 편집 할 수없는 방식으로 정보를 제공하고 싶지만 편집 버튼의 버튼을 누른 후에 편집 할 수 있습니다. 편집이 불가능한 상태에서 편집 가능한 상태로 쉽게 전환 할 수있는 방법이 있습니까?iPhone에서 편집 가능 및 편집 불가능 필드 제공

편집 할 수없는 필드에 UILabel을 사용하고이를 프로그래밍 방식으로 제거하고 UITextField을 표시하는 것으로 생각했습니다. 그러나 이것은 (IB의 장점을 유지하기 위해)하지 않기를 원하는 코드에 많은 형식을 지정하는 것처럼 보일 것입니다.

나는 또한 내 펜촉에 같은 위치에 UILabelUITextField을 갖고 있다고 생각하고 내가 원하지 않는 것을 숨기려고합니다. 그래도 꽤 해커처럼 보입니다.

아마도 별개의 두 가지보기가 가장 좋을까요?

위의 방법이나 더 나은 방법에 대한 의견은 매우 높이 평가 될 것입니다.

답변

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]; 
      } 
     } 
    } 
} 
+0

눈부셔, 감사합니다. 이 효과에 대해'textField.enabled'를 시도했지만 너무 일찍 그렇게 생각했습니다. 테두리와 글꼴도 완벽하게 작동합니다. * 그리고 * self.view.subviews에 대해 배웠습니다! – mmdeas

0

마찬가지로 fluchtpunkt도 이와 같이 할 수 있습니다. 그렇지 않으면 동일한 프레임 크기를 갖는 하나의 레이블과 하나의 텍스트 필드를 제공 할 수 있습니다. 그리고 편집 가능한 true에서 텍스트 필드를 표시하는 레이블을 숨길 수 있습니다. false를 편집하는 경우 텍스트 필드를 숨기는 동안 레이블을 표시 할 수 있습니다.

관련 문제