public override async void ViewDidLoad()
        {
            base.ViewDidLoad();

            if (SelectedTransactionId != 0)
            {
                var messagesViewController = GetViewController(MainStoryboard, "TransactionDetailController") as TransactionDetailViewController;
                messagesViewController.SelectedTransactionId = SelectedTransactionId;
                NavigationController.PushViewController(messagesViewController, true);
            }

            var searchButton = new UIBarButtonItem(UIBarButtonSystemItem.Search);

            searchButton.Clicked += SearchButton_Clicked;

            NavigationItem.SetRightBarButtonItem(searchButton, true);

            viewModel.Transactions.CollectionChanged += Transactions_CollectionChanged;
            viewModel.PropertyChanged += (sender, e) => InvokeOnMainThread(RefreshUI);

            await viewModel.FetchTransactionsCommand();

            var revealViewController = this.RevealViewController();

            if (revealViewController != null)
            {
                RevealButton.Clicked += (sender, e) => revealViewController.RevealToggleAnimated(true);
                View.AddGestureRecognizer(revealViewController.PanGestureRecognizer);
            }
            else
            {
                // Bug: Currently app needs to be restarted.
                RevealButton.Clicked += async(sender, e) =>
                {
                    await UIAlertViewHelpers.ShowAlert(
                        "Uh Oh!",
                        "You have to restart the app to see the menu. I promise this wont happen after you restart!",
                        "Got it!");
                };
            }

            LayoutViews();
            SignalRManager.RegisterEventHandlers();
            await SignalRService.ConnectAsync();
        }