2011-06-11 6 views
0

저는 iOS 개발에 익숙합니다. 나는 두 개의 테이블 뷰와 같은 콘텐츠 상세보기 뭔가를 :UITableView UIViewController 사용자 지정 하위 클래스를 상속하는 방법?

PopularContentViewController : UITableViewController 
LatestContentViewController : UITableViewController 
ContentDetailViewController : UIViewController 

나는이 컨트롤러 중 하나가로드되기 전에, 나는 사용자가 로그인되어 있는지 확인 할 수 있도록 몇 가지 인증을 추가 할하고, 그렇지 않은 경우 모달 로그인보기 컨트롤러를 보여줍니다.

내 생각은 내 자신의 UIViewController 하위 클래스 (예 : AuthenticatedViewController)를 만들고 내 다른 컨트롤러가 상속하게 만드는 것이 었습니다. 나는이 비슷한 질문을 발견

PopularContentViewController : UITableViewController : AuthenticatedViewController 
LatestContentViewController : UITableViewController : AuthenticatedViewController 
ContentDetailViewController : AuthenticatedViewController 

: 문제는 내가 이런 걸해야합니까 방법입니다 Can I create a UITableViewController that inherits from a custom subclass of UIViewController?

을 ...하지만 상속 또는 만드는 것보다이 다른 작업을 수행하는 또 다른 방법이 있는지 궁금하네요 내 AuthenticatedTableViewController 확장 내 자신의 UITableViewController? 어쩌면 프로토콜을 사용하거나 대리인을 대신 사용할 수 있습니까? 올바른 방향으로 찔러보고 싶을뿐입니다.

답변

1

Uitableviewcontroller는 UIViewController입니다. 그러나 당신은 잘못된 방향으로 가고 있습니다. 인증을위한 루트 뷰 컨트롤러를 생성하고, 아마도 네비게이션 컨트롤러에 배치하십시오. 그런 다음 사용자 하나가 인증되고 스택에 tableview 컨트롤러 중 하나를 밀어 넣거나 (또는 ​​런타임에 원본 컨트롤러를 완전히 교체하고 자격 증명을 저장하지 않음) ...

또는 사용자가 주장하는 경우 인증 백엔드 처리에 대한 카테고리 또는 싱글 톤을 사용하십시오 (가능하면 UI 제외). 작업 당 하나의보기 컨트롤러 (탐색 컨트롤러 컨테이너에서)의 길을 간다. 단순화, 단순화.

+0

그래, 이건 내가 생각했던 또 다른 방법과 비슷하다. 앱 대리인의 자격 증명을 확인하고 유효하지 않은 경우 모달 로그인보기 컨트롤러를 설치한다. 일단 로그인하면 루트보기 컨트롤러 (UITabBarController)를로드합니다. 이 접근 방식에 대해 싫어하는 유일한 점은 전체 앱을 본질적으로 잠그고 잠글 필요가없는보기 (예 : 탭 하나)가있을 수 있다는 것입니다. 어쩌면 그것은 거래 차단기가 아닐 수도 있습니다. – markquezada

+0

탭 표시 줄에서 선택적 탭 항목을 활성화/비활성화 할 수 있습니다. 네트워크를 사용할 수 없을 때 앱의 일부를 종료하는 데 사용합니다. 따라서 수표를 실행하고 로그인 할 때까지 해당 탭을 비활성화하십시오. 나머지 탭은 여전히 ​​사용할 수 있습니다. –

1

objective-c에서는 하나의 수퍼 클래스에서만 상속받을 수 있습니다. 여러 클래스를 상속 할 방법이 없습니다. appDelegate를 singleton 클래스로 사용하기 때문에 appDelegate에서 AuthenticatedViewController를 유지할 수있는 것과 같은 다른 접근 방식을 시도해 볼 수 있으며 모든 클래스에서 액세스 할 수 있습니다. 이렇게하면 원하는 기능을 얻을 수 있습니다.

+0

나는 약간의 우아함을 느꼈으므로 싱글 톤 접근 방식을 사용하지 않으려 고했지만 어쩌면 틀렸어. 저는 iOS 개발에 익숙하지 않으므로 다른 사람들이 이런 종류의 일을 성취하기 위해 사용하는 더 나은 일반적인 접근 방법이 있는지 알고 싶었습니다. 귀하의 의견을 보내 주셔서 감사합니다. – markquezada

관련 문제