У меня есть следующий код, вызываемый в представлении viewdidload внутри моего UIViewController.Monotouch Async и индикатор активности
Внутри appdelegate У меня есть UINavigationController, который создается с помощью вышеупомянутого контроллера и, в свою очередь, UINavigationController помещается внутри UITabViewController, который в свою очередь назначается как rootviewcontroller.
Внутри контроллера я делаю асинхронный веб-вызов, чтобы получить данные для заполнения таблицы, если я использую код просмотра загрузки для отображения индикатора активности, я получаю следующее предупреждение в моноточе.
Приложения должны иметь контроллер вида корень в конце запуска приложения
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);
}
}
Все указатели будут с благодарностью приняты.
EDIT: Я уже устанавливаю контроллер корневого представления.
window = new UIWindow (UIScreen.MainScreen.Bounds);
window.RootViewController = tabController;
Полный AppDelegate код:
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;
}
Можете ли вы показать метод FinishedLaunching в AppDelegate? Здесь обычно возникает ошибка. В iOS 5 вам необходимо назначить RootViewController, например: window.RootViewController = MyTabBarController; – Anuj
Посмотрите сейчас, уже делайте то, что вы предлагаете. – RubbleFord
Пожалуйста, разместите полную версию FinishedLaunching(). Лучше всего предположить, что ваш tabConroller имеет значение NULL. – Krumelur