2011-05-16 4 views
2

아이폰에서 의견을 교환하는 가장 좋은 방법에 대한 개발자 의견을 듣고 싶습니다.스와핑 기술보기

예를 들어 탭 표시 줄이 있고 그 탭 중 하나는 기본적으로 로그인보기입니다. 사용자가 로그인하면보기가 로그인 된보기로 변경됩니다.

필자는 단지 하나의보기 컨트롤러를 사용하고 필요에 따라 내용을 숨기고 표시하는 하나의 xib에있는 모든 내용을 갖겠다. 그러나 이것은 결코 우아하지 않다.

둘째, 하나의 viewcontroller를 갖고 단순히 xib를 교체하는 방법을 고려했습니다. 나는 기사를 읽거나 메모리 누수로 이어질 수 있다고 생각하면서 이것을 시도하는 것을 꺼려한다.

마지막으로 필자는 2 개의 뷰 컨트롤러를 2 개의 별도 xib와 함께 사용할 것을 고려하고있었습니다. 내 직감이 아마 "적절한"해결책이 될 것이라고하지만 지금까지 올바른 방법으로 모든 샘플 코드를 사냥하지 못했습니다.

이 문제를 해결하는 가장 좋은 방법에 대한 조언을 제공해 줄 수 있습니까? 나열되지 않은 기술이 있습니까? 감사합니다. .

답변

2

뷰 컨트롤러에 표시 할 논리를 유지합니다. XIB는 뷰 자체이며 특정 뷰에 대해 일시적이거나 항상 보이지 않는 개체가 뷰에 없어야합니다.

두 번째 접근법 (보기를 바꿔 치기)은 나에게 맞는 접근 방법 인 것처럼 보이며, 이러한 상황에서 개인적으로 항상 내가하는 일입니다. 난 당신이 바로 (superview에서 제거, 컨트롤러보기의 하위보기로 새보기를로드하여) 다음과 같은 경우 메모리 문제를 인식하지 못합니다. 새 XIB가로드되고 사용자에게 표시되기 전에 사용자 지정 초기화를 수행 할 수 있습니다.

여러 개의보기 컨트롤러가 이상적으로 다른 최상위 컨트롤러가 두 개의보기 컨트롤러를 관리해야하는 것처럼 보입니다.

+1

입력 해 주셔서 감사합니다. xib를로드하는 것을 본 적이있는 유일한 예는 다음과 같습니다. loginViewController = [[oginViewController alloc] initWithNibName : @ "LoginView"번들 : [NSBundle mainBundle]]; 컨트롤러 내에서 액츄 에이트 컨트롤러가 생성 된 후 두 번째 xib를로드하는 방법 – dubbeat

+0

뷰 컨트롤러를 초기화 할 때마다 NIB를 명시 적으로 초기화 할 필요가 없습니다. 보기 컨트롤러에 대한 init을 할 수 있으며 일단 메모리에로드되면 표시 할보기 (로그인 또는 로그인)에 대한 응용 프로그램의 모델에서 특정 검사를 실행할 수 있습니다. 그런 다음 - (NSArray *) loadNibNamed : (NSString *) 이름 소유자를 사용하여 뷰를로드 할 수 있습니다. (id) owner 옵션 : (NSDictionary *) options construct. –

+0

NIB의 파일 소유자를 올바른보기 컨트롤러로 설정하십시오. 그렇지 않으면 번들이 제대로로드되지 않거나보기 컨트롤러 내의 IBOutlet에 표시 될 수 있습니다. 희망이 도움이됩니다! –

관련 문제