У меня есть splitViewController.Это подробно VC
-(void)viewDidLoad
{
self.masterIsVisible = YES;
//a botton in navigation bar to hide or show the master view.
[button addTarget:self action:@selector(showOrHideMasterView)
forControlEventsTouchUpInside]
//gesture control to swipe right or left to slide master view in and out.
[swiperight addTarget:self action:@selector(showMasterView)];
[swipLeft addTarget:self action:@selector(hideMasterView)];
}
-(void)showOrHideMasterView
{
if (self.masterIsVisible)
[self hidemasterView]; self.masterIsVisible = NO;
else
[self showMasterView]; self.masterIsVisible = YES;
}
-(void)hideMasterView
{
//hides master view by substracting masterview's width from its origin.x
}
-(void)showMasterView
{
//shows master View by adding masterview's width to its origin.x
}
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController: (UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
return NO;
}
Все почти работает как задумано.Проблема: в одной ориентации && master НЕ виден .. затем устройство меняет ориентацию .. master View вместо того, чтобы соскользнуть с экрана, толкнул подробный вид в другую сторону.Я знаю это, потому что флаг теперь установлен как masterIsVisible = NO вместо YES.Что я могу сделать, чтобы изменить флаг на ДА при повороте устройства.выглядит тривиально, но, кажется, не может понять.
Я попытался зарегистрироваться для Devicechnagenotification в UIDevice, но это не сработало.BOOL ДА в любой ориентации.Пример Apple использует это, но похоже, что это не правильный подход.