Новый стиль приложений в iOS5, где вы должны установить RootViewController в UIWindow, очень меня смущает.
Я скачал последнюю версию библиотеки MonoTouch.Dialog отсюда:
https://github.com/migueldeicaza/MonoTouch.Dialog
Но когда я попытался скомпилировать и запустить включенный проект «Образец» на симуляторе, он вылетает и возвращает следующую ошибку:
Ошибка: приложенияожидается, что в конце запуска приложения будет установлен контроллер корневого представления
Затем я открыл проблему на GitHub:
https://github.com/migueldeicaza/MonoTouch.Dialog/issues/65
Но Мигель ответил мне, что:
Если вы используете новый стиль приложений в iOS5, вы должны установить RootViewController в UIWindow.Это новая функция iOS 5 для очистки, чтобы привести содержимое UIViewController на место.
Я попытался назначить контроллер Navigation приложения Sample для контроллера корневого представления окна, но безрезультатно.Все еще получаю ту же ошибку.Это метод FinishedLaunching включенного примера приложения:
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
var Last = new DateTime (2010, 10, 7);
Console.WriteLine (Last);
var p = Path.GetFullPath ("background.png");
window.AddSubview (navigation.View);
//ADDING THE Navigation Controller as RootViewController
window.RootViewController = navigation; //THIS LINE WAS ADDED BY ME
var menu = new RootElement ("Demos"){
new Section ("Element API"){
new StringElement ("iPhone Settings Sample", DemoElementApi),
new StringElement ("Dynamically load data", DemoDynamic),
new StringElement ("Add/Remove demo", DemoAddRemove),
new StringElement ("Assorted cells", DemoDate),
new StyledStringElement ("Styled Elements", DemoStyled) { BackgroundUri = new Uri ("file://" + p) },
new StringElement ("Load More Sample", DemoLoadMore),
new StringElement ("Row Editing Support", DemoEditing),
new StringElement ("Advanced Editing Support", DemoAdvancedEditing),
new StringElement ("Owner Drawn Element", DemoOwnerDrawnElement),
},
new Section ("Container features"){
new StringElement ("Pull to Refresh", DemoRefresh),
new StringElement ("Headers and Footers", DemoHeadersFooters),
new StringElement ("Root Style", DemoContainerStyle),
new StringElement ("Index sample", DemoIndex),
},
new Section ("Auto-mapped", footer){
new StringElement ("Reflection API", DemoReflectionApi)
},
};
var dv = new DialogViewController (menu) {
Autorotate = true
};
navigation.PushViewController (dv, true);
window.MakeKeyAndVisible ();
return true;
}
Единственная строка кода, которую я добавил, указана в комментариях, но это дополнение, похоже, не устраняет ошибку.Что-то мне не хватает?
Заранее спасибо!