2012. 9. 14. 09:26ㆍ제2외국어/iOS
1. 네비게이션바 뒤로가기 버튼에...
: 네비게이션컨트롤러를 이용할 때 뒤로가기 버튼이 자동으로 구성되는데, 이 경우에는 뒤로가기 버튼을 눌렀을 때
(1) 원하는 메소드 호출
(2) 커스텀 이미지
이 두가지를 하기가 어렵다.
(1)의 임시방편으로 viewDidDisappear 함수를 이용해서 확인할 수도 있지만, 이 방법은 뒤로가기 뿐만 아니라 다른 페이지로
넘어가는 경우에도 발생하기에 정확하게 문제를 해결할 수 있다고 볼 수 없다.
해결책
: 커스텀으로 버튼을 만들어준다음 액션을 연결해 주거나, 이미지를 설정한다.
해당 viewDidLoad에서
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"뒤로" style:UIBarButtonItemStyleBordered target:self action:@selector(goToBeforePage)];
self.navigationItem.leftBarButtonItem = backButtonItem;
하지만 위 방법으로는 UIBarButtonItem 형식이라, 만약에 네비게이션아이템의 형식을 원한다면..
[self.navigationItem.leftBarButtonItem setAction:@selector(goToBeforePage)];
이렇게 생성된 버튼에 @selector 만 연결시켜주면 된다.
이미지를 덮어 쒸우려면
[self.navigationItem.leftBarButtonItem setImage:[UIImage imageNamed:@"test.png"]];
이런식으로!
2. 네비게이션바가 연결된 뷰에 데이터를 넘길 때...
( - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 사용할 때 )
보통 뷰에서 뷰 이동간 데이터를 전달할 때, - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 를 사용
그러나 네비게이션컨트롤러가 연결된 뷰의 경우 문제가 되는데...
문제 없음
문제 발생
[원인]
문제 발생하는 이유는 destinationViewController가 다음 뷰로 인식은 되는데 실제로는 NavigationController에서 검사를 하기 때문에 생기는 오류이다.
빌드할 떄는 문제가 되진 않지만 실제 실행시 : ~unrecognized selector sent to instance 라는 메시지를 볼 수 있을 것이다.
해결책
: 네비게이션컨트롤러를 destinationViewController에 연결시킨 다음, 다음 뷰컨트롤러를 네비게이션컨트롤러의
topViewController로 지정, 그리고 데이터를 넘기면 된다.
UINavigationController *nc = segue.destinationViewController;
nextViewController *vc = (nextViewController *)[nc topViewController];
[vc setTitle : @"test"];
'제2외국어 > iOS' 카테고리의 다른 글
xCode 4.5 for iOS 6.0 달라진 점(2) (0) | 2012.10.04 |
---|---|
xCode 4.5 for iOS 6.0 달라진 점(1) (6) | 2012.09.24 |
Naming is important!!! (1) | 2012.09.11 |
[iOS]탈옥 여부 확인하기... (0) | 2012.08.08 |
WWDC2012에 대한 기대 (0) | 2012.06.08 |