2015-10-12 45 views
0

在我的应用程序中有一个浮动按钮。它的功能是从任何地方打开可用的屏幕。如何关闭并推送新的ViewController

方案

假设我有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]; 
} 
+0

你究竟从哪里打开屏幕?这些屏幕在哪里?这些由'UIViewController'实例表示吗? – Petar

+0

是的,所有的都是UIViewController实例 – NSUser

+0

发布当你点击“浮动按钮”时执行的代码吗? – Petar

回答

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]; 
} 
+0

兄弟我想弹出并推入新的屏幕根据用户选择。 – NSUser

+0

以及如果我在主屏幕,然后我打开服务 – NSUser

+0

是的,我明白了。敬请期待 – Jamil

0

我更喜欢用UITabBarController

+0

尊敬的用户,不要提供任何解释,不要回复downvoting答案。 UITabBarController专为上述应用程序的可访问性而设计。此外,使用UITabBarController将确保它包含的所有内容都将被实例化一次并按需提交,而不会有任何UI状态损坏的风险。 –

0

@NSUser,抱歉没有回答您确切的问题,但我会建议使用UIPageViewController作为“托管”并一次呈现您的内容视图控制器。下面是来自Apple的概念document,其中有基本描述和操作方法。祝你好运。

相关问题