Диалог прогресса просто не хочет показываться, он как скрытый или что-то в этом роде Пожалуйста, смотрите предпринятые шаги и пример кода.
У меня есть следующие шаги
- Показано модальное (список данных)
- Отображается UIAlertController (срок действия пароля истек, необходимо повторно ввести пароль)
- Индикатор прогресса над лайт-шоу (UIView)
- Сервисный вызов выполняется до завершения
- Отклонить индикатор выполнения
UIAlertController
private void ShowLogin(string message, Action<ExpiredResponseTypes> responseHandler)
{
UIApplication.SharedApplication.InvokeOnMainThread(() =>
{
var loginAlertController = UIAlertController.Create("Enter password", "", UIAlertControllerStyle.Alert);
//add login text
{basic normal code}
loginAlertController.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default,
(actionHandler) =>
{
ShowProgress();
var loginResult = HandleLogin();
DismissProgress();
loginResponseHandler(loginResult);
}));
AlertAutoLayoutHelper.TopLevelViewController().PresentViewController(loginAlertController, true, null);
});
}
AlertAutoLayoutHelper.TopLevelViewController
public static UIViewController TopLevelViewController()
{
var window = new UIWindow(UIApplication.SharedApplication.KeyWindow.Frame);
var vc = new UIViewController();
vc.View.BackgroundColor = UIColor.Clear;
window.RootViewController = vc;
window.WindowLevel = UIWindowLevel.Alert + 1;
window.MakeKeyAndVisible();
return vc;
}
ShowProgress
UIApplication.SharedApplication.InvokeOnMainThread(() =>
{
var bounds = UIScreen.MainScreen.Bounds;
loadingOverlay = new LoadingOverlay(bounds, optionalMessage, isSpecificLoader);
if (UIApplication.SharedApplication.KeyWindow.RootViewController.ModalViewController != null)
{
UIApplication.SharedApplication.KeyWindow.RootViewController.ModalViewController.View.AddSubview(loadingOverlay);
}
else
{ UIApplication.SharedApplication.KeyWindow.RootViewController.View.AddSubview(loadingOverlay);
}
isProgressShowing = true;
});
Накладка
public class LoadingOverlay : UIView
{
UIActivityIndicatorView activitySpinner;
UILabel loadingLabel;
public LoadingOverlay(CGRect frame, string message = null, bool isSpecificLoader = false) : base(frame)
{
{just normal setup }
AddSubview(activitySpinner);
AddSubview(loadingLabel);
}
}
Примечание: диалог прогресса работает нормально для обычных ситуаций, отображается при вызове из UIViewController)
Я застрял на несколько дней, пожалуйста, помогите.