2012-04-23 2 views
0

여러보기가있는 응용 프로그램을 개발 중입니다. xlib 파일에서 만든 이미지 갤러리 용 템플릿이 있습니다. 이보기는 스크롤보기에서 단일 페이지로로드됩니다. 나는 함께 Xlib를 여러 시간을로드 뷰를 얻을 수 있어요 다음nib 파일에서로드 된 UIView 관련 문제

키 보드가 keyboardWasShown을 표시 할 때 내가 직면하고 첫 번째 문제는,있다
- (void)registerForKeyboardNotifications 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(keyboardWasShown:) 
               name:UIKeyboardDidShowNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(keyboardWillBeHidden:) 
               name:UIKeyboardWillHideNotification object:nil]; 

} 
- (id)initWithFrame:(CGRect)frame 
{ 
    self = [[[NSBundle mainBundle] loadNibNamed:@"GSEstimateView" owner:self options:NULL] lastObject]; 
    self.commentText.delegate = self; 
    self.scrollView.delegate = self; 
    self.commentText.delegate =self; 
    [self registerForKeyboardNotifications]; 
    return self; 
} 

: 방법은 내가 가진 많은 UIViews 요구지고 만들어진. 두 번째 UIView에서 키보드를로드하려고하면 유효하지 않은 선택기가 호출되는 예외가 발생합니다. nib 또는 xlib 싱글 톤에서 UIView로드 된 있습니까? nib 파일에서 UIView 인스턴스를로드하면 어떻게 알 수 있습니까?

답변

0

(^. ^)은

안녕하세요 처음에는이 같은 프로토콜을 사용하는 NSNotification을 선호 사용하지 않는 것이 좋습니다 "안녕 미안 내 영어 사람처럼 내 편집을 수정하면 나는이 감사하겠습니다 좋지 않다".

@protocol KeyBoardDelegate <NSObject> 
- (void)KeyBoardVisible:(BOOL)op; 
@end 

그리고 당신은 배수 전망이 경우 당신이 원하는 경우에 지금과 같이 뷰 컨트롤 :

  • * 의 viewDidLoad, viewDidUnload, viewWillDisappear, viewWillAppear 등 *

이렇게 UIViewController보기를 사용하는 것이 좋습니다.

UIViewControllerCustom *example = [[UIViewControllerCustom alloc] initWithNibName:@"exampleNIB" bundle:[NSBundle mainBundle]]; 
[self.view addSubview:example.view]; 

이 사용하면 예제의 ViewController의 뷰의 컨트롤을 가지고 방법

- (void)viewDidLoad{ 
    [super viewDidLoad]; 
    //When the nib has been loaded. 
} 

- (void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    //When the view is show. 
} 

- (void)viewWillDisappear:(BOOL)animated{ 
[super viewWillDisappear:animated]; 
//The view is hidden 
} 

- (void)viewDidUnload{ 
[super viewDidUnload]; 
// Release any retained subviews of the main view. 
} 

그리고 좀 더 방법을 사용할 수 있습니다. :)

+0

xlib보기를 하위보기로 추가하는 것은 확실히 의미가 있습니다. 키보드 등록을 init 메소드로 옮겨서 어떻게 동작하는지 살펴 보겠습니다. 이 방법이 효과가 없다면 두 번째 옵션을 선택하겠습니다. 당신의 도움을 주셔서 감사합니다. –

+0

당신을 진심으로 환영합니다. – NTTake