【问题标题】:Determine which View is currently open and get variable from this view确定当前打开的视图并从此视图中获取变量
【发布时间】:2017-08-18 07:15:56
【问题描述】:

我正在使用 Xcode 8.3.3 和 Swift 3.1 for iOS 10 编写一个程序。这个程序是一个信使,所以它可以发送和接收来自其他用户的消息。此应用程序有多个屏幕(联系人、统计信息、聊天等)和一个接收传入消息的后台线程。我需要确定是否应该向用户显示新的传入消息。我的意思是,如果与某人的单一聊天屏幕打开,我不需要向用户显示消息,但在任何其他屏幕上我需要显示弹出视图。因此,我需要确定当前打开的视图并从该视图接收变量(在我的情况下是var chat: Chat!,它包含聊天 ID)以确定哪个聊天接收到消息。每个信使都有类似的功能:WhatsApp、Viber。有人知道该怎么做吗? 如有任何帮助或建议,我将不胜感激。

我不明白:为什么这个问题会下降?有什么问题?

【问题讨论】:

  • 你在使用 websockets 吗?
  • 没有第三方库。
  • 是第三方websocket库还是聊天库?
  • 其实没什么区别,只是一些线程
  • 我不知道它不是我的……

标签: ios swift uiviewcontroller background


【解决方案1】:

我认为对于您的情况,您的每个视图都必须有自己的聊天 ID,当您收到一些消息时,您必须比较您的消息的聊天 ID 和您的视图

【讨论】:

  • 我的浏览量很多,只有一个是单屏聊天。因此,当它打开时,我需要确定他的聊天 id,如果它等于消息聊天 id,则不显示传入消息。在其他情况下,我需要展示。
  • 据我了解,单一聊天屏幕是只有您可以编写消息的屏幕,例如保存网址或保存一些重要信息?但如果不是,我不明白你的问题,请更具体。
  • 打开你的 WhatsApp,你会看到你的聊天列表。选择一个聊天,它会将您传递到带有消息的屏幕。它是单个聊天屏幕。如果它被打开,并且我们正在念诵,那么你将不会看到我的弹出消息。但是如果你离开这个屏幕,那么你会在小黑盒子里收到我所有的消息。
  • 好的,我明白了。因此,您有一些带有聊天列表的 tableView 或一些 collectionView,当您收到一些消息并尝试显示该弹出窗口时,它们位于某个视图控制器中,显示您的弹出窗口,如果它是错误的,请将您的消息存储在某处并在 viewWillAppear 工作时显示它们
  • 是的,我有聊天的表格视图。每行都是一个聊天。当用户按下它时,他将被扔到单聊天屏幕上。每个单一聊天屏幕都有唯一的 chatId。当用户收到消息时,我需要找出它的聊天ID,然后决定是否显示消息弹出窗口。
猜你喜欢
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多