2012-11-27 2 views
0

전체 화면으로 설정하고 화면 하단의 탭 표시 줄을 덮고 싶은 설정 대화 상자가 있습니다. this SO answer을 사용하고 내보기 컨트롤러에 HidesBottomBarWhenPushed을 추가했으며 탭 표시 줄을 숨 깁니다. 불행히도 하위 삼각형 표시 자 서브 뷰는 UITabBarController 하위 클래스로 표시됩니다.HidesBottomBarWhenPushed leaves 표시기

enter image description here

나는 내가 표시기 표시하기 위해 구독 할 수 있습니다 통지의 형태가 있으리라 믿고있어하지만 난 그게 뭔지 모르겠어요. 여기 좀 도와 줘?

답변

0

나중에 참조 할 수 있도록 녹음 할 가치가 있다고 생각하므로 직접 대답 해 드리겠습니다. 내 HomeDialogViewControllerViewDidLoad() 방법에 SettingsDialogViewController I 와이어를 가지고 :

NavigationItem.LeftBarButtonItem = new UIBarButtonItem("Settings", UIBarButtonItemStyle.Plain, (e, sender) => { 
    ActivateController (_settingsDvc()); 
}); 

SettingsDialogViewControllerHidesBottomBarWhenPushed = true 만들어집니다. 따라서 설정 대화 상자가 활성화되면 하단 막대가 숨겨져 CustomTabBarControllerViewWillLayoutSubviews() 메소드가 호출됩니다. 이 메서드를 재정의하면 표시되는보기 컨트롤러 (예 : SettingsDialogViewController)가 푸시 될 때 맨 아래 표시 줄을 숨길 지 여부에 따라 표시기의 표시 여부를 설정할 수 있습니다. 해당 뷰 컨트롤러가 팝되면 표시기가 자동으로 다시 나타납니다.

public override void ViewWillLayoutSubviews() { 
    base.ViewWillLayoutSubviews(); 
    var selectedVc = SelectedViewController as UINavigationController; 
    indicator.Hidden = selectedVc != null && selectedVc.VisibleViewController.HidesBottomBarWhenPushed; 
} 

마지막 주

, 나는 새 설정보기를 활성화 할 때 발생 애니메이션이 상태 표시 줄 아래의 화면에서 검은 색 밴드를 표시하는 것을 발견했다. 나는 "보기"컨트롤러에서 AutoResizingMask을 설정하여이 문제를 해결했습니다.

public override void ViewDidLoad() { 
    base.ViewDidLoad(); 
    NavigationItem.LeftBarButtonItem = new UIBarButtonItem("Settings", UIBarButtonItemStyle.Plain, (e, sender) => { 
     ActivateController (_settingsDvc()); 
    }); 
    View.AutoresizingMask = UIViewAutoresizing.FlexibleHeight; 
}