2013-11-28 5 views
1

에서이 코드와 UINavigationBar의 오른쪽에의 UITextField를 추가하려고 해요 :UITextField에이 UINavigationBar

UITextField *txtField=[[UITextField alloc]init]; 
[email protected]"Text Goes Here"; 


txtField.translatesAutoresizingMaskIntoConstraints=NO; 
[self.navigationController.navigationBar addSubview:txtField]; 



NSArray * constraints=[NSLayoutConstraint constraintsWithVisualFormat:@"H:[txtField(100)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(txtField)]; 

[self.navigationController.navigationBar addConstraints:constraints]; 

그 프로그램이 충돌하는 것을 어떻게

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. UINavigationBar's implementation of -layoutSubviews needs to call super.' 

말 그리고 난 못해 이유를 찾아보십시오 ... 이 작업을 수행하는 올바른 방법은 무엇입니까?

+1

당신이 UINavigationBar에 대한 사용자 정의 클래스를 사용하고 있습니까? –

+1

탐색 표시 줄에 텍스트 필드를 추가하는 대신 컨트롤러의 navigationItem 속성에 UIBarButtonItem을 추가해보십시오. initWithCustomView :를 사용하여 바 버튼 항목을 만들고 텍스트 필드를 사용자 정의보기로 전달하십시오. – rdelmar

+0

아니요 UINavigationBar를 서브 클래스로 사용하지 않았습니다 – Mppl

답변

2

봅니다 사용자 지정보기와 UIBarButtonItem와 같은 텍스트 필드를 추가하고,로 navigationItem.rightBarButtonItem 것을 설정 :

UITextField *txtField = [[UITextField alloc]init]; 
txtField.text = @"Text Goes Here"; 
txtField.translatesAutoresizingMaskIntoConstraints = NO; 

UIBarButtonItem *rightBarButtonItem = [UIBarButtonItem alloc] initWithCustomView:txtField]; 

self.navigationController.navigationItem.rightBarButtonItem = rightBarButtonItem; 
+1

이것이 올바른 아이디어라고 생각합니다.하지만 내 이유가 무엇인지 모르겠으므로이 링크의 코드를 따라 가면서 작업을 시작했습니다. http : //www.iphonegamezone .net/118 / –