Monotouch Async и отображение индикатора активности - PullRequest
0 голосов
/ 03 февраля 2012

У меня следующий код, вызываемый для представления метода viewdidload внутри моего UIViewController.

Внутри appdelegate у меня есть UINavigationController, который создается с помощью этого вышеупомянутого контроллера, и, в свою очередь, UINavigationController находится внутриUITabViewController, который, в свою очередь, назначается как rootviewcontroller.

Внутри контроллера я делаю асинхронный веб-вызов, чтобы получить данные для заполнения таблицы, если я использую код загрузочного представления для отображения индикатора активности Iполучите следующее предупреждение в монотуше.

Ожидается, что приложения будут иметь контроллер корневого представления в конце запуска приложения

public class LoadingView : UIAlertView
{
    private UIActivityIndicatorView _activityView;

    public void ShowActivity (string title)
    {
        Title = title;

        this.Show();
        // Spinner - add after Show() or we have no Bounds.
        _activityView = new UIActivityIndicatorView (UIActivityIndicatorViewStyle.WhiteLarge);
        _activityView.Frame = new RectangleF ((Bounds.Width / 2) - 15, Bounds.Height - 50, 30, 30);
        _activityView.StartAnimating ();
        AddSubview (_activityView);

    }

    public void Hide ()
    {
        DismissWithClickedButtonIndex (0, true);
    }
}

Любые указатели будут с благодарностью приняты.

РЕДАКТИРОВАТЬ: Я уже настраиваю контроллер корневого представления.

window = new UIWindow (UIScreen.MainScreen.Bounds);
        window.RootViewController = tabController;

Полный код приложения: Легальный код:

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
        {
            // create a new window instance based on the screen size
            window = new UIWindow (UIScreen.MainScreen.Bounds);

            tabController = new UITabBarController();

            jobsNavigationController = new UINavigationController(new JobsController());
            jobsNavigationController.NavigationBar.BarStyle = UIBarStyle.Black;
            jobsNavigationController.TabBarItem.Image = UIImage.FromFile("Images/briefcase.png");
            jobsNavigationController.TabBarItem.Title = "Current Positions";

            myAccountNavigationController = new UINavigationController(new LoginDialogViewController());
            myAccountNavigationController.NavigationBar.BarStyle = UIBarStyle.Black;
            myAccountNavigationController.TabBarItem.Image = UIImage.FromFile("images/man.png");
            myAccountNavigationController.TabBarItem.Title = "My Account";

            tabController.SetViewControllers(new UIViewController[] { jobsNavigationController,myAccountNavigationController,new SettingsDialogViewController()},false);

            window.RootViewController = tabController;

            // make the window visible
            window.MakeKeyAndVisible (); 
            return true;
        }

Ответы [ 2 ]

0 голосов
/ 04 февраля 2012

window.AddSubview (tabcontroller.view);

Исправлена ​​проблема, странно, я больше не устанавливаю rootviewcontroller.

0 голосов
/ 03 февраля 2012

Чтобы избежать этого предупреждения (в iOS5) и сохранить совместимость с iOS 4.x, вы можете сделать следующее внутри вашего FinishedLaunching метода:

if (UIDevice.CurrentDevice.CheckSystemVersion (5, 0))
    window.RootViewController = navigation; 
else
    window.AddSubview (navigation.View);

Смотрите здесь для более полного образца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...