gpt4 book ai didi

ios - 直接跳转到通常通过 TabBarViewController 中的选项卡之一访问的 View Controller

转载 作者:行者123 更新时间:2023-11-29 12:07:33 24 4
gpt4 key购买 nike

这是我的应用程序的层次结构

  1. 有一个带有 4 个选项卡的 TabBarViewCOnyroller
  2. 每个选项卡显示一个 TableListViewOCnroller
  3. 当用户在 TableListViewCONtrilelrs 中选择一行时,根据哪个选项卡和哪一行推送不同的 View Controller 。其中每一个都有一个导航后退按钮,可以将 UI 带回到 Tab-Bar View Controller

例如聊天选项卡按时间戳排序顺序显示聊天列表。显示与每个远端交换中的最后一次聊天。当用户选择某一行时,它会进入一个 View Controller ,该 View Controller 显示用户和与该行连接的远端之间的所有消息。

当我收到来自特定远端的带有消息的推送通知,并且用户选择它时,我希望应用程序直接转移到 View Controller ,其中包含带有导航返回按钮指向的远端的所有消息到“聊天选项卡”。我知道如何以编程方式显示消息显示 View Controller ,但我不知道如何以允许用户导航回聊天选项卡的方式嵌入它。

有人可以向我指出一些示例代码,说明如何实现这一点。很抱歉要求提供现成的解决方案。太多基础框架的东西需要掌握,所以没有时间掌握 UI 的东西!

编辑我正在使用的代码

    NSInteger index = 1 ;// the index of the chat tab
UITabBarController *myTabBarController = (UITabBarController *)self.window.rootViewController;
myTabBarController.selectedIndex = index;
UINavigationController *navVC = myTabBarController.viewControllers[index];

ChatListTableViewController *listVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"chatlistview"];
listVC.navigationItem.backBarButtonItem.title = @"Chats";

MessageDisplayViewController *detailVC = [[MessageDisplayViewController alloc] init];
//Initialize all the variables needed by JSQMessage class
detailVC.hidesBottomBarWhenPushed = YES;
detailVC.title = detailVC.recipient = userInfo[@"sender"];
//To Do Map farEndID to farEndNickName using unique user table
detailVC.recipientNickName= detailVC.recipient ;
detailVC.managedObjectContext=self.managedObjectContext ;
detailVC.senderDisplayName=[[NSUserDefaults standardUserDefaults] stringForKey:@"NickName"];
detailVC.senderId=[[NSUserDefaults standardUserDefaults] stringForKey:@"UserID"];

//navVC.viewControllers = @[listVC, detailVC];
navVC.viewControllers = @[listVC];
[navVC pushViewController: detailVC animated:NO];

最佳答案

要将标签栏 Controller 更改为标签,请使用

NSInteger index = // the index of the chat tab
myTabBarController.selectedIndex = index;

该选项卡上的 UINavigationController 也可以通过编程方式进行操作。

  1. 在选项卡处获取导航 Controller :

    UINavigationController *navVC = myTabBarController.viewControllers[index];
  2. 像往常一样构建显示所有对话的 Root View Controller 。

    UIViewController *listVC = // you build this somehow in your code already... do that
    listVC.title = @"Chat";
  3. 像往常一样构建显示对话详细信息的 View Controller ,并使用新收到的消息对其进行初始化。

    UIViewController *detailVC = // you build this somehow in your code already... do that
  4. 替换导航 View Controller 堆栈。

    navVC.viewControllers = @[listVC];
    [navVC pushViewController: detailVC animated:NO];

关于ios - 直接跳转到通常通过 TabBarViewController 中的选项卡之一访问的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34517296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com