如何在用户选择时在 uitabbarcontroller 内的 uinavigationcontroller 中每次都初始化 viewcontroller

Posted

技术标签:

【中文标题】如何在用户选择时在 uitabbarcontroller 内的 uinavigationcontroller 中每次都初始化 viewcontroller【英文标题】:How to initialize viewcontroller every time in uinavigationcontroller which is inside uitabbarcontroller on user selection 【发布时间】:2012-05-15 12:32:35 【问题描述】:

我正在尝试完成一项任务,但即使尝试了几天也没有成功。

我有一个标签栏,其中包含 3 个标签“朋友”、“聊天”、“设置”。

好友选项卡只是 uitableviewcontroller 的子类,当用户点击任何用户时,他将跳转到第二个选项卡,即聊天选项卡。

第二个选项卡(聊天)包含一个 uinavigations 控制器。这个 uinavigationcontroller 它本身包含两个视图 1> 聊天界面,2> ActiveChats,它是 uitableviewcontroller 的子类,用于显示用户当前正在与之聊天的人员列表。

我想要的是当用户在第一个选项卡上并选择她的任何朋友聊天时,她必须跳转到第二个选项卡并直接看到聊天界面才能与她的朋友聊天。问题是我必须为navigationcontoller设置一个根视图控制器,该控制器将被预初始化,但我希望每次用户选择她的朋友时都必须初始化聊天视图控制器,我还实现了一个方法initWithId,它必须接受一个选定的人id 并将消息传递给特定的人并保存发送和接收的消息。

问题的第二部分,这个聊天界面是根视图控制器,但我还想要一个后退按钮,所以当用户点击它时,用户将看到 ActiveChat 视图。此功能类似于 WhatsApp、Viber 或 OneTeam 应用程序。

请帮助我,避免任何愚蠢的错误,我是新手。谢谢。

【问题讨论】:

【参考方案1】:

我理解您问题的第一部分,因为您想使用特定于用户的详细信息初始化您的类的对象。 您已经使流程变得非常复杂,如果它是基于导航的,对您来说会容易得多。现在在这里,根据您的要求,您必须在单击的每一行上初始化您的类,因此您必须使您的“聊天界面”作为 UINavigation 或 viewcontroller.view 的 rootview 的子视图,然后在 rootView 的 viewDidLoad 方法中,您可以每次都初始化“聊天界面”。

我可以从您的其他问题中推断出,您希望后退按钮实际转到 UInavigationcontroller 中的下一页,这不实用且没有意义。只需将 nextview 推送到 navigationController。

来自我们的 cmets, 我看到了这个网站,它不是一个后退按钮,它已经被定制为一个后退按钮。Apple 不允许这样的事情,你可能会冒险你的应用程序。无论如何你可以这样做:-

UIImage *image= [UIImage imageNamed:@"yourImage.png"]; //Here image shoulb be similar to backButton
UIButton *yourButton= [UIButton buttonWithType:UIButtonTypeCustom]; 
[yourButton setBackgroundImage:image forState:UIControlStateNormal]; 
yourButton.font = [UIFont boldSystemFontOfSize:10]; 
yourButton.frame = CGRectMake(0, 0, image.size.width, image.size.height); 
[yourButton addTarget:self action:@selector(yourTarget) forControlEvents:UIControlEventTouchUpInside];  self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:yourButton]; 

【讨论】:

whatsapp.com 和 process-one.net/en/solutions/oneteam_iphone 正在做我想做的同样的事情...... 非常感谢您理解我的问题并给了我可爱的详细答案。问题是我还是新手,很难掌握一些概念。你了解了整个场景,你能不能用 tabbar 和 uinavigationcontroller 作为它的第二个选项卡创建一个小项目,并尝试在 navigationcontroller 中初始化 viewcontroller。我会非常感谢你。我的电子邮件 ID 在我的个人资料中。 如果我得到 tym,我会在你的应用上尝试 2mrw :)

以上是关于如何在用户选择时在 uitabbarcontroller 内的 uinavigationcontroller 中每次都初始化 viewcontroller的主要内容,如果未能解决你的问题,请参考以下文章

ios在选择uitabbarcontroller项目时检索

在 iOS7 UITabbarController 中,如何在点击已选择的 tabBarItem 时停止将 navigationController 重置为 root?

如何在使用照片框架从照片中选择图像时在选择器中隐藏 iCloud 图像

选择计划项目时在 Postgres 中考虑 DST

选择计划项目时在 Postgres 中考虑 DST

当用户返回到 UITabBarController 选项卡时如何刷新表数据