recherche

Maison  >  Questions et réponses  >  le corps du texte

ios - 关于微信好友列表跳转问题

请问微信中点击通讯录,然后选择一个好友,然后点击发送消息之后,返回的还是主界面?这个功能是怎么实现的呢?看他点击发送消失之后是pop到了通讯录的好友列表,然后在push进去的,我的实现方式是先popToRoot 然后在切换tabbar选中,感觉这样看起来并不丝滑~求助

大家讲道理大家讲道理2771 Il y a quelques jours615

répondre à tous(1)je répondrai

  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:37:53

    Afin d'éviter plusieurs interfaces de discussion et une imbrication profonde, et d'unifier les habitudes de fonctionnement, WeChat et de nombreuses applications de messagerie instantanée limitent « toute entrée dans l'interface de discussion doit être effectuée à partir de la liste de conversations. Plusieurs applications que j'ai créées auparavant se trouvent dans The ». il en va de même pour l’ouverture de l’interface de chat.
    Il existe une méthode publique pour ouvrir l'interface de chat, qui peut être appelée depuis n'importe quelle interface. Ou définissez un itinéraire pour l'interface de chat.
    Par exemple : + [ChatViewController openWithUser:(User *)user];

    Prenons l'exemple de la structure de l'application WeChat. Il y a une navigation en haut, une barre de tabulation en bas et une seule liste de conversations. La logique d'ouverture de l'interface de chat est à peu près la suivante :

    if (currentChatViewController && currentChatViewController.user.userId == user.userId) {
        // 如果这个人的聊天界面已经打开了
    
        if (conversationListViewController.navigationController.viewControllers.count > 2) {
            // 不在聊天界面:比如在查看资料界面,就返回到聊天界面
            [conversationListViewController popToViewController:currentChatViewController animated:YES];
        }
    } else {
    
        // 退出当前的聊天界面,animated: NO
        if (conversationListViewController.navigationController.viewControllers.count > 1) {
            [conversationListViewController.navigationController popToRootViewControllerAnimated:NO];
        }
    
        ChatViewController *chatVC = [[ChatViewController alloc] initWithUser:user];
    
        [conversationListViewController.navigationController pushViewController:chatVC animated:YES];
    }
    
    tabBarViewController.selectedIndex = 0;

    Pour obtenir le contrôleur racine, la liste des sessions et la fenêtre de discussion actuelle, vous pouvez utiliser des variables globales ou utiliser du code pour vérifier :

    UITabBarController *tabBarViewController = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
    
    UIViewController *conversationListViewController = tabBarViewController.viewControllers.firstObject;
    
    ChatViewController *currentChatViewController =
        (ChatViewController *)(conversationListViewController.navigationController.viewControllers.count > 1 ?
                               conversationListViewController.navigationController.viewControllers[1] : nil);

    répondre
    0
  • Annulerrépondre