xamarin.ios 中的 UITabBarController 不使用 StoryBoard
UITabBarController in xamarin.ios without using StoryBoard
在 中继续我的问题,我想 post 一个完整的问题,这将是很多 xamarin.ios 开发人员的问题。
我的要求是在所有 UIViewController 中使用 TabBar。所以,据我所知,有两种方法可以实现它。
第一个:
appDelegate -> set RootViewController : TabController -> UVC1
在这种情况下,我有 NULL NavigationController 并且我没有 navigationItem。在
this.NavigationController.PushViewController(new
SearchViewController(), true);
NavigationController 为空时出错
这是我在 AppDelegate 中的代码:
_tabController = new TabController();
_window.RootViewController = _tabController;
和我的 TabController:
public class TabController : UITabBarController
{
UIViewController tab1, tab2, tab3, tab4;
public TabController()
{
tab1 = new HomeViewController();
tab1.TabBarItem.Image = UIImage.FromFile("Icons/Home.png");
tab2 = new TagCategoryViewController(null, null, 1, null);
tab2.TabBarItem.Image = UIImage.FromFile("Icons/Tag.png");
tab3 = new SearchViewController();
tab3.TabBarItem.Image = UIImage.FromFile("Icons/Search.png");
tab4 = new ProfileViewController();
tab4.TabBarItem.Image = UIImage.FromFile("Icons/Home.png");
var tabs = new UIViewController[] {
tab1, tab2, tab3,tab4
};
ViewControllers = tabs;
}
}
第二种方式:
RootViewController -> navigationController -> TabController -> UVC1 ->
new UVC2 -> no tab bar !!
在这里,一切听起来不错,但是当我导航到选项卡中不存在的新 UIViewController 时,TabBar 将消失!
代码是:
_tabController = new TabController();
var navigationController = new UINavigationController(viewController);
_window.RootViewController = new UINavigationController(_tabController);
我能做什么?任何想法?
我不使用故事板!
通过用 UINavigationController
包装所有 UIViewController
,您可以启用您想要的行为,但请确保删除 TabBarController
,因为 NavigationBar
将与 NavigationBar
来自您的观点。
_window.RootViewController = _tabController;
以及您的观点:
tab1 = new UINavigationController(new HomeViewController());
tab1.TabBarItem.Image = UIImage.FromFile("Icons/Home.png");
在
我的要求是在所有 UIViewController 中使用 TabBar。所以,据我所知,有两种方法可以实现它。
第一个:
appDelegate -> set RootViewController : TabController -> UVC1
在这种情况下,我有 NULL NavigationController 并且我没有 navigationItem。在
this.NavigationController.PushViewController(new SearchViewController(), true);
NavigationController 为空时出错
这是我在 AppDelegate 中的代码:
_tabController = new TabController(); _window.RootViewController = _tabController;
和我的 TabController:
public class TabController : UITabBarController {
UIViewController tab1, tab2, tab3, tab4;
public TabController()
{
tab1 = new HomeViewController();
tab1.TabBarItem.Image = UIImage.FromFile("Icons/Home.png");
tab2 = new TagCategoryViewController(null, null, 1, null);
tab2.TabBarItem.Image = UIImage.FromFile("Icons/Tag.png");
tab3 = new SearchViewController();
tab3.TabBarItem.Image = UIImage.FromFile("Icons/Search.png");
tab4 = new ProfileViewController();
tab4.TabBarItem.Image = UIImage.FromFile("Icons/Home.png");
var tabs = new UIViewController[] {
tab1, tab2, tab3,tab4
};
ViewControllers = tabs;
}
}
第二种方式:
RootViewController -> navigationController -> TabController -> UVC1 -> new UVC2 -> no tab bar !!
在这里,一切听起来不错,但是当我导航到选项卡中不存在的新 UIViewController 时,TabBar 将消失!
代码是:
_tabController = new TabController();
var navigationController = new UINavigationController(viewController);
_window.RootViewController = new UINavigationController(_tabController);
我能做什么?任何想法?
我不使用故事板!
通过用 UINavigationController
包装所有 UIViewController
,您可以启用您想要的行为,但请确保删除 TabBarController
,因为 NavigationBar
将与 NavigationBar
来自您的观点。
_window.RootViewController = _tabController;
以及您的观点:
tab1 = new UINavigationController(new HomeViewController());
tab1.TabBarItem.Image = UIImage.FromFile("Icons/Home.png");