如何解雇并推送新的ViewController

时间:2015-10-12 10:27:28

标签: ios objective-c uinavigationcontroller

在我的应用程序中有一个浮动按钮。它的功能是从任何地方打开可用的屏幕。

  

方案

假设我有4个屏幕,并且在每个屏幕中它们都是浮动按钮。

1. Home Screen
2. Services Screen
3. Contact Screen
4. Events

现在假设我已经打开了所有屏幕。目前我在联系人屏幕,我想去服务。

然后我必须再次推送服务,从而创建服务屏幕的对象。这会产生一个问题,就好像用户对服务进行了10次搜索,然后将创建10个新对象。

如何实施此方案?

我的代码:

 if([sender tag]==1)
   {
      [push home];
   }

 else if([sender tag]==2)
   {
      [push services];
   }
else if([sender tag]==3)
   {
      [push Contact];
   }
 else

 {
     [push events];
 }

3 个答案:

答案 0 :(得分:0)

试试这个。

UIViewController *popViewController = //assign here Services Screen or what view you want to back

BOOL isExist = NO;
for (UIViewController *viewController in self.navigationController.viewControllers) {
    if ([viewController isEqual:popViewController]) {
        isExist = YES;//exist view controller. so you should not create a new one
        [self.navigationController popViewControllerAnimated:YES];
    }
}

if (isExist==NO) {//not exist view controller. so you should create a new one
    [self.navigationController pushViewController:YourViewController animated:YES];
}

答案 1 :(得分:0)

我更喜欢使用UITabBarController

答案 2 :(得分:0)

@NSUser,很抱歉没有回答您的确切问题,但我建议您使用UIPageViewController进行“托管”,并逐个展示您的内容视图控制器。以下是来自Apple的概念性document,其中包含基本描述和操作方法。祝你好运。