如何在uitabbar中弹出视图?

时间:2013-04-02 09:30:42

标签: ios objective-c uitabbar popviewcontroller

我使用uitabbar为ios开发了一个应用程序。在tabbar我有一些uitableview导致一些uiview。例如:

A:Tabbar按钮 - > B:表视图 - > C:相对于用户点击的表格视图的行的视图

标签栏的正常行为是,如果我点击直到我指示为“C”的视图,然后单击另一个标签栏按钮并单击回到我指示为“A”的标签栏按钮,我find打开视图“C”而不是“B”(由tabbar按钮调用的表视图)。 现在我希望tabbar始终指向其第一个视图(在这种情况下为B,即使用户点击直到C) 为了做到这一点,我在我的appdelegate中使用此代码,以确保它具有相同的行为,即使在“更多按钮”的情况下。

UITabBarController* tabBarController2 = (UITabBarController*)self.window.rootViewController;

if ([viewController isKindOfClass:[UINavigationController class]]) {
    [tabBarController2.selectedViewController popToRootViewControllerAnimated:NO];
}
if (tabBarController2.selectedIndex < 4) {
    [tabBarController2.moreNavigationController popViewControllerAnimated:NO];
}

有时,当它尝试弹出时,应用程序崩溃。我做错了什么?

该行

[tabBarController2.selectedViewController popToRootViewControllerAnimated:NO];

触发此警告“AppDelegate.m:27:10:'UIViewController'可能无法响应'popToRootViewControllerAnimated:'”

2 个答案:

答案 0 :(得分:3)

我建议你的一种方法是,在你的UIView viewWillDisapear方法中编写以下代码:

[self.navigationController popToRootViewControllerAnimated:NO];

答案 1 :(得分:1)

popToRootViewControllerAnimated:

这是UINavigationController类的一个方法,你将它用于UITabBarController,它是UIViewController的子类实习生。

尝试:

[(UINavigationController *)tabBarController2.selectedViewController popToRootViewControllerAnimated:NO];