У меня есть приложение с раскадровкой среднего размера, которая достаточно сложна, чтобы я не хотел слишком много возиться с ней.
Я хочу скопировать эту раскадровку и изменить цветовую схему, чтобы пользователь мог выбрать, какую цветовую схему использовать.
Мой вопрос: могу ли я программно выбрать, какая раскадровка будет использоваться по умолчанию при запуске? Если да - как мне это сделать?
Я рассмотрел несколько связанный вопрос: Ориентация раскадровки Поддержка в Xcode 4.5 и iOS 6.x?
На основе этого кода я сделал метод расширения:
static bool IsStoryboardLoading {get;set;}
public static T ConsiderSwitchingStoryboard<T> (this UIViewController from) where T: UIViewController
{
if (!IsStoryboardLoading && LocalStorage.Instance.IsWhiteScheme && false) {
try {
IsStoryboardLoading = true;
UIStoryboard storyboard = UIStoryboard.FromName ("MainStoryboard_WHITE", NSBundle.MainBundle);
T whiteView = storyboard.InstantiateViewController (typeof(T).Name) as T;
from.PresentViewController (whiteView, false, null);
return whiteView;
} finally {
IsStoryboardLoading = false;
}
}
return null;
}
}
а затем я использую его в переопределении ViewDidAppear
:
public override void ViewDidAppear (bool animated)
{
this.ConsiderSwitchingStoryboard<MyViewController> ();
}
Этот код работает в некоторых случаях, но в других он вызывает ошибку при выполнении перехода push
:
NSGenericException Reason: Could not find a navigation controller for segue 'segSearchResults'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.
at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging:void_objc_msgSendSuper_IntPtr_IntPtr (intptr,intptr,intptr,intptr)