【问题标题】:Push multiple view controllers in storyboard在情节提要中推送多个视图控制器
【发布时间】:2023-04-10 13:43:02
【问题描述】:

我在故事板中有三个控制器(FriendVC、ChatVC、PrivateChatVC),并且导航是顺序的:

用户可以从FriendVC 导航到ChatVC(在TabBarController),然后导航到PrivateChatVC

现在,我需要制作一些按钮,该按钮将从FriendVC 打开PrivateChatVC,但还将ChatVC 放在导航堆栈上,因此当用户从PrivateChatVC 按下返回时,他将返回到@987654329 @。

我面临的问题是我的ChatVCTabBarController

下面是我正在尝试的代码:

   [self.tabBarController setSelectedIndex:1];
   PrivateChatController * privateChatController = [self.storyboard instantiateViewControllerWithIdentifier:@"privatechat"];
   [self.navigationController pushViewController:privateChatController animated:YES]; 

我假设[self.tabBarController setSelectedIndex:1] 将加载标签栏,然后[self.navigationController pushViewController:privateChatController animated:YES]; 将加载PrivateChatVC

但是,我只需要 ChatVCPrivateChatVC 永远不会加载。

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    您在正确的轨道上,您需要像您一样选择 ChatVC 选项卡,但使用单例类并设置一个参数,以便当 ChatVC 成为活动 VC 时,它知道立即推送 PrivateChatVC。

    在 FriendVC 中:

    _singleton.showPrivateChat = YES;
    [self.tabBarController setSelectedIndex:1]; // select ChatVC tab
    

    在 ChatVC 中:

    - (void) viewDidAppear {
    
        if (_singleton.showPrivateChat) {
            PrivateChatController * privateChatController = [self.storyboard instantiateViewControllerWithIdentifier:@"privatechat"];
            [self.navigationController pushViewController:privateChatController animated:YES]; 
            _singleton.showPrivateChat = NO; // reset boolean
        }
    }
    

    【讨论】:

      【解决方案2】:

      警告!!这是非常糟糕的代码!使用它需要您自担风险:)

      ChatVC *chatVC = [self.storyboard instantiateViewControllerWithIdentifier:@"chat"];
      PrivateChatController * privateChatController = [self.storyboard instantiateViewControllerWithIdentifier:@"privatechat"];  
      [self.navigationController pushViewController:privateChatController animated:YES];
      NSMutableArray *viewControllers = [self.navigationController.viewControllers mutableCopy];
      [viewControllers insertObject:chatVC atIndex:viewControllers.count - 2];
      self.navigationController.viewControllers = viewControllers;
      

      【讨论】:

        猜你喜欢
        • 2013-10-21
        • 1970-01-01
        • 1970-01-01
        • 2014-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多