pushViewController在返回后无法正常工作

时间:2015-02-11 10:08:07

标签: ios objective-c uiviewcontroller

对于我的代码结构:

在AppDelegate上,我为我的UITabBar声明了4个UINavigationController和他们自己的根UIViewController。

我创建了一个自定义UIViewController作为模板,其中我的其他UIViewControllers是子类。

在我的模板上: 我有我的rightBarButtonItem来显示当前的用户个人资料。

// public method added on template
- (void) goToProfile {
    NSLog(@"going through...");
    ProfileViewController *ctrl = [[ProfileViewController alloc] init];
    [self.navigationController pushViewController:ctrl animated:YES];
}

对于我的leftBarButtonItem:

- (void) goBack {
    [self.navigationController popViewControllerAnimated:YES];
}

首先点击rightBarButtonItem,工作正常。如果我点击leftBarButtonItem返回然后重新点击rightBarButtonItem,它就不再有用了。

另外,我的一个UIViewController上有一个按钮,它调用公共方法goToProfile。这很好。

2 个答案:

答案 0 :(得分:0)

如果您正在使用UITabBar的UINavigation控制器推送或弹出

另外在UITab Bar ...中显示UINavigation Controllers。 Profile View控制器是否是UITab栏的一部分..

然后你需要改变标签栏的索引,如下所示

self.tabBarController.selectedIndex=0;//if profile is first tab

ProfileViewController *ctrl = [[ProfileViewController alloc] init];
[self.navigationController pushViewController:ctrl animated:YES];

希望它对你有所帮助......

答案 1 :(得分:0)

我得到了同事的帮助。这种方法类似于@ Vidhyanand900的答案。我希望这将有助于其他人。

tabbarSelectedIndex = 1; // profile tab index

ProfileViewController *ctrl = [[ProfileViewController alloc] init];
UINavigationController *navController = [_appDelegate.mainTabBarController.viewControllers objectAtIndex:tabbarSelectedIndex];
[navController pushViewController:ctrl animated:YES];

self.mainTabBarController.selectedIndex = tabbarSelectedIndex;