ios - 关于微信好友列表跳转问题
大家讲道理
大家讲道理 2017-04-18 09:35:53
[iOS讨论组]

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
伊谢尔伦

微信及很多 IM app 为了防止聊天界面多开、深层嵌套,也为了统一操作习惯,都限定了「凡是进聊天界面,都统一从会话列表进」,我之前做的几款 app 在对打开聊天界面的处理上也是这样。
有一个用于打开聊天界面的公共方法,可以在任意界面调用。或者定义一个聊天界面的路由。
比如:+ [ChatViewController openWithUser:(User *)user];

以微信的 app 结构为例,上有导航下有 tabBar ,只有一个会话列表。打开聊天界面的逻辑大概是这样:

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;

获取根控制器、会话列表、当前聊天窗口,可以使用全局变量,或者用代码查:

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);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号