2014-09-24 2 views
0

iOS 디자이너 (Objective-C 세계에서는 IB)로 정적 UITableView을 설정했습니다. 그러나 오리엔테이션은 제한하고 싶지만 변경되었습니다.정적 인 UITableView를 사용할 때보기 컨트롤러의 방향을 제한하십시오.

나는 다음과 같은 짓을했는지 : 나는 세로방향 선택 시뮬레이션 통계에서

에서 속성. 내 UITableViewController을 위해 다음과 같은 기능을 구현하고있어보다 :

public override bool ShouldAutorotate() 
{ 
    return false; 
} 

public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations() 
{ 
    return UIInterfaceOrientationMask.Portrait; 
} 

public override UIInterfaceOrientation PreferredInterfaceOrientationForPresentation() 
{ 
    return UIInterfaceOrientation.Portrait; 
} 

GetSupportedInterfaceOrientations가 호출 나는 세로을 반환하지만보기는 계속 회전한다. 내가 뭘 놓치고있어?

편집 :

나는 View Orientation에서 논의 된 접근 방식을 사용했습니다. 내보기 컨트롤러에 대해 작동합니다. 정적 UITableViewController은 스택이 꽂혀 : 여기

this.PresentViewController (new UINavigationController(myStaticTableViewController), true, null); 

UINavigationController의 표준 구현이 사용된다. 또한

partial class CustomNavigationController : UINavigationController 
{ 

    public CustomNavigationController (IntPtr handle) : base (handle) 
    { 
    } 

    public override bool ShouldAutorotate() 
    { 
     return TopViewController.ShouldAutorotate(); 
    } 

    public override UIInterfaceOrientation PreferredInterfaceOrientationForPresentation() 
    { 
     return TopViewController.PreferredInterfaceOrientationForPresentation(); 
    } 
} 

를 구현하는 내 CustomNavigationController 그것을 시도했지만이 IntPtr 내 테이블 뷰 컨트롤러를 변환 할 수 없기 때문에 나는이

this.PresentViewController (new CustomNavigationController(myStaticTableViewController), true, null); 

처럼 뭔가를 할 수 없습니다. 아마도 이것이 인터페이스 방향을 따르지 않는 이유 일 것입니다. 내가 가진 해결책은 무엇입니까?

답변

0

링크 된 스레드에 명시된대로 다른 생성자 만 추가하면됩니다.

partial class CustomNavigationController : UINavigationController 
{ 

    public CustomNavigationController(UIViewController rootViewController) : base(rootViewController) 
    { 

    } 

    public CustomNavigationController (IntPtr handle) : base (handle) 
    { 
    } 

    public override bool ShouldAutorotate() 
    { 
     return TopViewController.ShouldAutorotate(); 
    } 

    public override UIInterfaceOrientation PreferredInterfaceOrientationForPresentation() 
    { 
     return TopViewController.PreferredInterfaceOrientationForPresentation(); 
    } 
} 

가 지금은

this.PresentViewController (new CustomNavigationController(myStaticTableViewController), true, null) 

을 사용할 수 있으며 모든 것이 예상대로 작동 : 이제 내 CustoMNavigationController은 다음과 같습니다.