我正在尝试在iPad应用程序中使用TinyMessenger。 iPad应用程序很少有UIViewControllers。我想通过TinyMessenger看到这些控制器之间的通信。我理解这些步骤
var messageHub = new TinyMessengerHub();
messageHub.Publish(new MyMessage());
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?
感谢任何帮助。
答案 0 :(得分:4)
您需要将此信使中心与IoC容器结合使用。
您的应用中只需要一个集线器实例,并且使用容器是实现此目的的方法。
请参阅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
预处理器指令,为你的应用程序自动注册一个集线器。