2

TabBar없이 UIViewController (연결보기)로 시작하는 응용 프로그램 (Xamarin.IOS)이 있습니다. 그러나 Logged User, 내가 만든 Tabbar를 다른보기에 추가하고 싶습니다. 그리고 그 반대로, 사용자가 로그 아웃 할 때 TabBar없이 연결보기를 표시하고 싶습니다.일부 UIViewController의 XAMARIN.IOS UITabBarController

나는 내가 TabBar의를 표시 할 때, AppDelegate에, 나는이 같은 _window 초기화 할 필요가 있음을 알고

_tabController = new TabController(); 
_window.RootViewController = _tabController; 
_window.MakeKeyAndVisible(); 

을 내가 TabBar의없이보기를 원한다면, 여기 AppDelegate에는 다음과 같습니다

public class TabController : UITabBarController 
    { 

     UIViewController tab1, tab2, tab3, tab4; 

     public TabController() 
     { 
      tab1 = new UINavigationController(new ListViewController()); 
      tab1.Title = Texts.Home; 
      tab1.TabBarItem.Image = UIImage.FromFile("Icons/[email protected]"); 

      tab2 = new UINavigationController(new OViewController(1)); 
      tab2.Title = Texts.Categories; 
      tab2.TabBarItem.Image = UIImage.FromFile("Icons/[email protected]"); 

      tab3 = new UINavigationController(new SearchViewController()); 
      tab3.Title = Texts.Search; 
      tab3.TabBarItem.Image = UIImage.FromFile("Icons/[email protected]"); 

      tab4 = new UINavigationController(new BookmarkViewController(1)); 
      tab4.Title = Texts.Bookmarks; 
      tab4.TabBarItem.Image = UIImage.FromFile("Icons/[email protected]"); 


      var tabs = new UIViewController[] { 
       tab1, tab2, tab3, tab4 
      }; 

      this.TabBar.BackgroundColor = UIColor.White; 

      ViewControllers = tabs; 
     } 
    } 

그러나이 어떻게 TabBa와보기에서 이동할 수 있습니다 :이 TabController와

viewController = new ConnectionViewController(); 
_window.RootViewController = new UINavigationController(viewController); 
_window.MakeKeyAndVisible(); 

r없이보기로 그리고 그 반대?

Xamarin.iOS에서 StoryBoard 및 I 코드를 사용하지 않습니다.

답변

4

탭 -> 아니요 탭

  1. 밀어

    ViewController2 vc2 = new ViewController2(); 
    vc2.HidesBottomBarWhenPushed = true; //add this line 
    this.NavigationController.PushViewController(vc2, true); 
    
  2. 현재

    this.PresentViewController(new ViewController2(), true, null); 
    

enter image description here

없음 탭 -> 탭

설정 연결 페이지 RootViewController로 처음에, 그리고 당신이 원하는 경우 다음을 변경합니다.

코드 :

public partial class AppDelegate : UIApplicationDelegate 
{ 
    UIWindow window; 

    public override bool FinishedLaunching (UIApplication app, NSDictionary options) 
    { 
     window = new UIWindow (UIScreen.MainScreen.Bounds); 

     window.RootViewController = new UINavigationController(new ViewController1()); 
     window.MakeKeyAndVisible(); 
     return true; 
    } 

    public void changeRootVC() 
    { 
     window.RootViewController = new TabController(); 
    } 
} 

그리고이 Connection Page

if(connected){ 
    AppDelegate app = UIApplication.SharedApplication.Delegate as AppDelegate; 
    app.changeRootVC(); 
} 

enter image description here

+0

ColeXia에서 변경, 그것을 숨기기 위해 완벽! 그것은 매력처럼 작동합니다! 그러나 그 반대의 경우, TabBar가없는 ViewController를 사용하고 TabBar를 사용하여 다른 ViewController로 이동한다는 의미입니다. 어떻게하면됩니까? 보다 자세한 내용은 연결 VC에 TabBar가없고 appDelegate에 TabBar가 아닌 UINavigationController 인스턴스가있는 RootViewController가 있고 사용자가 연결하면 TabBar가있는 홈 페이지로 이동합니다. 그것에 대해 알고 있습니까? – Alireza

+0

가장 좋은 방법은'_tabController = new TabController(); _window.RootViewController = _tabController; _Window.MakeKeyAndVisible();'AppDelegate –

+0

에서 가져 왔지만 Conncetion 페이지에서 TabBar가 필요하지 않습니다! 또한 연결이 내 TabBar에 없습니다! – Alireza