菜鸟教程小白 发表于 2022-12-13 00:26:38

ios - 使用 UITabBar 和 UINavigationBar


                                            <p><p>我在同时使用 UITabBar 和 UINavigationBar 时遇到问题。我的意图是让 tabBar 显示我的 3 个选项卡,并在每个显示自定义名称的选项卡上显示我的 navBar,并且在其中一些选项卡上还显示一些按钮(例如添加按钮)。</p>

<p>我在 AppDelegate 的 didFinishLaunchingWithOptions 中创建了 ViewController :</p>

<pre><code>AAA *vc1 = [ init];
BBB *vc2 = [ init];
CCC *vc3 = [ init];
</code></pre>

<p>创建 tabBar 并填充它:</p>

<pre><code>self.tabBarController = [ init];
self.tabBarController.viewControllers = @;
</code></pre>

<p>接下来,我在这些 ViewController 的 tabBarItems 中添加了一些标题和图像,这些都可以正常工作,但我想在应用程序顶部显示导航栏。所以我创建了导航 Controller ,但我不知道我需要用什么 ViewController 来启动它。如果我使用 vc1 并将 navController 设置为 rootViewController,应用程序会显示 vc1 的 View 并显示 navBar,但不显示 tabBar。</p>

<pre><code>UINavigationController *navController = [ initWithRootViewController:vc1];
self.window.rootViewController = navController;

//self.window.rootViewController = self.tabBarController;
</code></pre>

<p>我尝试将 tabBarController 设置为 init navController 并将 navController 设置为 rootViewController - 在本例中, View 、tabBar 和 navBAr 显示正确,但我没有与 Viewvc1、vc2、vc3 关联的 navBarItems。</p>

<p>这就是我创建 navBarItems 的方式(例如在 AAA.m 中):</p>

<pre><code>- (instancetype)init {
self = ;
if (self) {
    UINavigationItem *navItem = self.navigationItem;
    navItem.title = @&#34;name&#34;;
}
return self;
}
</code></pre>

<p>我需要做些什么才能使其协同工作?谢谢。</p>

<p>编辑:</p>

<p>我对代码进行了一些修改,现在导航栏可见,但仅在 UINavigationController 的 initWithRootViewController 方法中设置的 ViewController 上可见。例如,在下面的代码中,我只能在 vc2 上看到每个 View 上的标签栏和导航栏。我的意图是在这三个 vc 中的每一个上都有标签栏和导航栏。</p>

<pre><code>UINavigationController *navController = [ initWithRootViewController:vc2];

self.tabBarController = [ init];
self.tabBarController.viewControllers = ;


self.window.rootViewController = self.tabBarController;
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>好的,我有一个适合您的方法...为此,您需要在 Storyboard 中进行更改。
这是一个截图
<a href="/image/I9xk5.png" rel="noreferrer noopener nofollow"><img src="/image/I9xk5.png" alt="enter image description here"/></a> </p>

<p>现在为 UITabBar 创建一个类:<code>class TabBarViewController: UITabBarController</code></p>

<p>这个类不要写任何东西,仅供引用。</p>

<p>在 AppDelegate 类中,方法:didlaunchFinish:</p>

<pre><code>let vcTabBarViewController = STORYBOARD.instantiateViewController(withIdentifier: &#34;TabBarViewController&#34;) as? TabBarViewController
      navigationController.viewControllers =
</code></pre>

<p>现在在第一个选项卡上的第一个 ViewController 中,
在 viewDidLoad 方法中:
粘贴这些行:</p>

<pre><code>let tabBar = self.tabBarController?.tabBar
let homeTab = tabBar?.items? as UITabBarItem!
let searchTab = tabBar?.items? as UITabBarItem!
let myProfileTab = tabBar?.items? as UITabBarItem!

homeTab?.image = UIImage(named: &#34;home-select&#34;)!.withRenderingMode(.alwaysOriginal)
homeTab?.image = UIImage(named: &#34;home&#34;)!.withRenderingMode(.alwaysTemplate)

searchTab?.image = UIImage(named: &#34;search-select&#34;)!.withRenderingMode(.alwaysOriginal)
searchTab?.image = UIImage(named: &#34;search&#34;)!.withRenderingMode(.alwaysTemplate)
</code></pre>

<p>希望这能解决您的问题。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 UITabBar 和 UINavigationBar,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43154704/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43154704/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 UITabBar 和 UINavigationBar