private IEnumerator LoadView(ViewType viewType, object dataObject = null, Action onComplete = null) { _isWaitingForLoading = true; UIViewBase topViewOnStack = GetViewOnTopOfStack(); if (topViewOnStack != null) { topViewOnStack.HideView(); yield return(new WaitUntil(() => topViewOnStack.IsDisabled)); } var viewObject = Instantiate(ViewsObjectsList.First(view => view.Type == viewType).ViewObject); var viewToOpen = viewObject.GetComponent <UIViewBase>(); viewToOpen.SetupView(dataObject); _viewsStack.Add(viewToOpen); yield return(new WaitUntil(() => viewToOpen.IsViewLoaded)); onComplete?.Invoke(); _isWaitingForLoading = false; }