1

我正在尝试在我的 iPad 应用程序中使用 TinyMessenger。iPad 应用程序的 UIViewController 很少。我想通过 TinyMessenger 看到这些控制器之间的通信。我将步骤理解为

第 1 步 - 创建消息中心 [ ? ]

var messageHub = new TinyMessengerHub();

第 2 步 - 发布消息 [在 UIViewController1 中]

messageHub.Publish(new MyMessage());

第 3 步 - 订阅消息 [在 UIViewController2 中]

messageHub.Subscribe<MyMessage>((m) => { MessageBox.Show("Message Received!"); });

MyMessage 定义如下

public class MyMessage : ITinyMessage
{
    /// <summary>
    /// The sender of the message, or null if not supported by the message  implementation.
    /// </summary>
    public object Sender { get; private set; }
}

请告知这是否是使此设置正常工作的正确步骤。而且我不知道应该在哪里创建messagehub。我相信 messagehub 必须是全局的,以便任何 UIViewController 都可以访问它。我可以在 AppDelegate 中创建 messagehub 吗?如果在 AppDelegate 中创建 messagehub,如何从 UIViewController1 访问 messagehub?

感谢任何帮助。

4

1 回答 1

4

您需要将此信使集线器与 IoC 容器结合使用。

您只需要应用程序中的 1 个集线器实例,并且使用容器是执行此操作的方法。

请参阅TinyIoC中设置容器的示例(我相信您正在使用)。你基本上会打电话:

var hub = TinyIoCContainer.Current.Resolve<ITinyMessengerHub>();
//for subscribers
hub.Subscribe<YourMessage>(OnYourMessage);
//for publishers
hub.Publish(new YourMessage(this, "BOOYAH!"));

PS - 如果你真的在使用 TinyIoC,#if TINYMESSENGER你可以打开一个预处理器指令来自动为你的应用程序注册一个集线器。

于 2012-05-31T02:33:57.983 回答