2014-09-24 2 views
0

Я установил статический UITableView с iOS Designer (IB в мире Objective-C). Но ориентация меняется, несмотря на то, что я хочу ее ограничить.Ограничение ориентации контроллера просмотра при использовании статического UITableView

Я сделал следующее:

В Свойства под моделируемых Метрики я выбрал Портрет в Ориентация. Чем я реализует следующие функции для моего UITableViewController:

public override bool ShouldAutorotate() 
{ 
    return false; 
} 

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

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

GetSupportedInterfaceOrientations называется и я вернусь Портрет но вид по-прежнему вращается. Что мне не хватает?

Edit:

Я использовал подход, описанный в View Orientation. Это работает для моих контроллеров. Статическая UITableViewController выталкивается таким образом на стеке:

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

Здесь используется стандартная реализация UINavigationController. Я также попытался это с моим CustomNavigationController, который реализует

partial class CustomNavigationController : UINavigationController 
{ 

    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); 

, потому что он не может преобразовать мой вид таблицы контроллер IntPtr. Возможно, именно поэтому он не учитывает ориентацию интерфейса. Какие у меня решения?

ответ

0

Кажется, мне пришлось добавить еще один конструктор, как указано в связанной теме. Теперь мой CustoMNavigationController выглядит следующим образом:

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) 

и все работает, как ожидалось.

Смежные вопросы