按Tab键栏项时如何关闭视图?

时间:2013-06-05 05:40:35

标签: ios objective-c uiview uitabbarcontroller

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

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

我是ios的新手,所以我可能不会那么好解释。我附上几张照片来表明我的意思。

Initial Home Screen Home Screen After Button Pressed, item on navigational stack

我假设我要解决的问题是截取在标签栏上按下的Home按钮并告诉它解除之前加载的视图。我可以出去吃午饭了。

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

这是我的故事板的样子。我使用了Editor-> Embed TabbarController。 enter image description here enter image description here

**更新:仍在尝试解决此问题。我试图通过app delegate设置标签栏控制器委托,根据stackoverflow上的一些Q / A,但它似乎没有什么区别。如果我想要一个带有各个部分按钮的主屏幕,那么我应该采取另一种方法,那些部分有导航和标签栏控制器?

5 个答案:

答案 0 :(得分:3)

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

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

您可以从标签栏中找到导航控制器对象,如下所示

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


the use popToRootViewController

[navcon popToRootViewControllerAnimated:NO];

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

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

答案 1 :(得分:0)

试试这个

[self.tabBarController setSelectedIndex:1];

答案 2 :(得分:0)

我可以看到你正在使用UINavigationController进入下一个视图(Video),而不是使用UITabBarController。

您应该使用TABBarController方法。

答案 3 :(得分:0)

如果在推送时显示视频页面,则在后退按钮的此选择器操作中

添加

[self.navigationController popViewControllerAnimated:YES];

答案 4 :(得分:0)

我设法解决了这个问题,但我不得不重新开始。我使用标签栏应用程序模板启动。然后在故事板中的每个视图上,我选择了“Editor-> Embed-> Navigation Controller”。向每个标签栏的视图添加导航控制器。在初始视图中,我创建了按钮和控件,从它们拖动到每个视图以链接它们。

然后我更新了以下文件:

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;
}

MyViewController.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第3代上进行了测试。