아이폰 기본 UINavigationController 사용 외 Custom하는 방법
1. UINavigationController를 상속받은 객체를 생성한다.
-> 초기화시 navigationBarHidden 속성을 YES로 변경한다
#import <Foundation/Foundation.h>
#import "NavViewController.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;
}
{
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 = [TNB getTnbWithTitle:@"테스트맵" LeftTitle:@"이전" AndRightTitle:@"지도"];
[i_tnb addTarget:self actionForRightButton:@selector(onShowMapButton:)];
[self.view addSubview:i_tnb];
}
[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];
}
{
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;
}
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];
}
{
[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 |