블로그 이미지
안녕하세요~ iolate(isho) 의 블로그 입니다~! iolate

카테고리

분류 전체보기 (164)
Server, Cloud (7)
끄적끄적 (9)
Linux, Ubuntu (22)
개발질 (44)
Mac (18)
iOS (23)
IoT (13)
NAS (1)
Web (5)
Network (3)
Review (10)
기타 (9)
비공개글 (0)
Total607,491
Today43
Yesterday130

'UIViewController'에 해당되는 글 1건

  1. 2011.08.12 PreferenceBundles 에서 UIViewController 사용하기
iOS5 에선 수정되었음. 단, iOS4 와의 호환성을 위해서라면 여전히 유효한....
PreferenceLoader 자체가 설정을 "로드" 해주는게 다라서 PL 버젼 보다는 iOS 버젼을 따라가는듯...


======
당췌 PreferenceBundles 부분은 관련 문서를 구할 수가 없다..
게다가 open source 인데 소스가 git 에서 사라진 상태;;(검색해도 안나오고 말이쥐;;)
(수정.. 소스가 있긴 있다. 근데 이제보니 별로 도움안되는 소스더라..)

이런 상황에서 용케 만드는 사람들이 신기하군..ㅠㅠ


하여간,
PSViewController 에서 다음 뷰로 넘기기 위해선
PushViewController:animated:  가 아니라 PushController: 를 사용하면 되는데
문제는 PSViewController 클래스만 지원한다..

아니, UIViewController 도 되긴 되는데 UIViewController 로 넘어간 후에 뒤로가기를 누르면 튕겨버린다.
이유는 뒤로가면서 원래 보던 뷰에 setRootController:(id)controller 라는 메소드를 호출하는데
UIViewController 에는 해당 메소드가 없다..ㅠ

PreferenceBundles 에서 사용되는 클래스들은 일반적으로 쓰는 클래스를 하나도 상속 받지 않더라..ㅠ
(뭐 NSObject 정도는 상속 받겠지만)

게다가 PSViewController 에는 addSubView: 같은 메서드도 없다! 이런...


방법은
1. PSViewController 에서 -(id)view 를 재정의 한다.
 즉 -(id)view 메소드에서 내가 쓰려는 뷰나 뷰컨트롤러를 만들고 그 뷰를 return 해주면 된다.

하지만 나의 경우엔 LibActivator 의 EventSettingView 를 가져오는데 저렇게 하니 깨짐;;ㅠㅠ

그래서 곰곰히 생각해보다가 해결!!

2. UIViewController 에서 setRootController: 정의 하면 된다 ㅋ
원랜 Preference 소스 보고 원래대로 작동하게 할려고 했는데 소스도 없고 테스트 해보니 걍 아무 작업 안해줘도 잘만 되더라.


@interface newView : UIViewController
- (void)setRootController:(id)controller;
@end

@implementation newView
- (void)setRootController:(id)controller
{
return;
}
@end


그리고 newView 를 호출해서 pushController 해주면 끗~!

iOS 버젼따라 오류가 날 수도 있다. 그러면 그 메소드들을 다시 오버라이드 해주자.
나의 경우 iOS4, 5 에서 전혀 문제 없었다.


Posted by iolate

최근에 달린 댓글

최근에 받은 트랙백

글 보관함