0

我有一个视图,顶部有一个导航栏,中间有 4 个菜单按钮,底部有一个标签栏导航。

当仅使用标签栏项目时,一切正常,但是当我通过按钮加载其中一个视图时,当按下标签栏项目时,视图仍然存在。

我是 ios 新手,所以我可能无法很好地解释它。我附上几张照片来说明我的意思。

初始主屏幕 按下按钮后的主屏幕,导航堆栈上的项目

我假设我必须解决的问题是拦截在标签栏上按下的 Home 按钮并告诉它关闭先前加载的视图。我可以出去吃午饭。

请让我知道如何使标签栏上的主页按钮加载初始视图,即使其中一个按钮被按下以加载另一个视图。

这是我的故事板的样子。我使用了 Editor->Embed TabbarController。 在此处输入图像描述 在此处输入图像描述

** 更新:仍在努力解决这个问题。我试图根据stackoverflow上的一些Q/A通过应用程序委托设置标签栏控制器委托,但它似乎没有任何区别。如果我想拥有一个带有各个部分的按钮的主屏幕,并且这些部分有导航和标签栏控制器,我应该采取另一种方法?

4

5 回答 5

3

您需要在标签栏项目点击事件中添加一行代码

在标签栏项目的导航控制器上使用 popToRootViewController 方法。

您可以像这样从标签栏中找到导航控制器对象

UINavigationController *navcon = (UINavigationController*)myTabBarController.selectedViewController;


the use popToRootViewController

[navcon popToRootViewControllerAnimated:NO];

您可以将此委托用于此代码

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
于 2013-06-05T05:48:39.680 回答
0

试试这个

[self.tabBarController setSelectedIndex:1];

于 2013-06-05T05:48:18.257 回答
0

我可以看到您正在使用 UINavigationController 转到下一个视图(视频)而不是使用 UITabBarController。

您应该使用 TABBarController 方法。

于 2013-06-05T06:06:07.547 回答
0

如果在 push 上显示视频页面。然后在后退按钮的选择器操作中

添加

[self.navigationController popViewControllerAnimated:YES];
于 2013-06-05T06:06:49.183 回答
0

我设法解决了这个问题,但我不得不重新开始。我使用标签栏应用程序模板开始。然后在情节提要的每个视图上,我选择了“编辑器->嵌入->导航控制器”。将导航控制器添加到每个选项卡栏的视图。在初始视图中,我创建了按钮和控件,将它们从它们拖到每个视图以链接它们。

然后我更新了以下文件:

AppDelegate.h

@interface NRMAppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>

@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
    tabController.delegate = self;
    return YES;
}

我的视图控制器.m

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    UINavigationController *navcon = (UINavigationController*)tabBarController.selectedViewController;

    [navcon popToRootViewControllerAnimated:NO];
}

还向按钮添加了 IBAction 以更改按下按钮时选择的选项卡。

- (IBAction)firstButtonPressed:(id)sender {
    [self.tabBarController setSelectedIndex:1];
}

我在模拟器、iPhone 5 和第三代 iPod touch 上对其进行了测试。

于 2013-06-06T00:43:01.513 回答