아이폰 기본 UINavigationController 사용 외 Custom하는 방법

1. UINavigationController를 상속받은 객체를 생성한다.
-> 초기화시 navigationBarHidden 속성을 YES로 변경한다

#import <Foundation/Foundation.h>
#import "NavViewController.h"

@interface NavController : UINavigationController <UINavigationControllerDelegate> {
NavViewController * i_rootController;
}
@end
-------------------------------------------------------------------------------------------------------------

#import "NavController.h"
@implementation NavController
- (id)init
{
    if(self = [super init])
 {
  self.navigationBarHidden = YES;
 }
    return self;
}
@end


2. 네비게이션을 최초로 실행하는 Controller에서 삽입할 ViewController를 생성한 뒤 위 상속받은 네비게이션컨트롤러에 initWithRootViewController 메소드를 통해 초기화 후 addSubview를 통해 상위 View에 할당한다

UIViewController * navView;
navView = [[NavViewController alloc] init];
i_navControllerArray = [[NavController alloc] initWithRootViewController:navView];
[self.window addSubview:i_navControllerArray.view]; 
[navView release];

3. 생성된 View의 초기화 단계에서는 네이게이션바를 대체할 수있는 커스텀 UI를 생성한다

if(self = [super init])
{
 i_tnb  = [TNB getTnbWithTitle:@"테스트맵" LeftTitle:@"이전" AndRightTitle:@"지도"];
 [i_tnb addTarget:self actionForRightButton:@selector(onShowMapButton:)];
 
 [self.view addSubview:i_tnb];
}

4. 해당 UI에서 네비게이션 버튼 클릭시 발생되는 이벤트시 페이지 이동을 위해서 pushViewController 메소드를 사용하여 신규 View Controller 페이지를 네비게이트 시킨다.
- (void) onShowMapButton:(id)sender
{
 NSLog(@"MapButton");
 
 MapViewController * mapViewController = [[MapViewController alloc]init] ;
 
 [self.navigationController pushViewController:mapViewController animated:YES];
 
 [mapViewController release];
 
}

5. 네이게이트 된 후 이전 페이지로 돌아갈 경우 popViewControllerAnimated 메소드를 사용하여 이전 페이지로 돌아간다
@implementation MapViewController
-(id) init {
 
 if(self = [super init])
 {
  i_tnb  = [TNB getTnbWithTitle:@"맵" LeftTitle:@"이전" AndRightTitle:@"현재위치"];
  [i_tnb addTarget:self actionForLeftButton:@selector(onBackButton:)];
  [self.view addSubview:i_tnb];
 }
 
 return self;
}
- (void) onBackButton:(id)sender
{
 [self.navigationController popViewControllerAnimated:YES];
}
@end

'iOS' 카테고리의 다른 글

오퍼레이션 큐에서 메모리릭 상황  (0) 2011.02.17
메모리릭 현상(1)  (0) 2011.01.31
iPhone TestCase 생성  (0) 2011.01.18
NSOperation  (0) 2011.01.11
NSOperationQueue  (0) 2011.01.10

+ Recent posts