У меня есть приложение со средним раскадровкой, которое достаточно сложно для меня, чтобы не хотеть слишком много обходиться с ним.Поддержка двух раскадровки
Я хочу скопировать эту раскладку и изменить цветовую схему и позволить пользователю выбрать, какую цветовую схему использовать.
Мой вопрос: могу ли я программно выбрать, какая раскадровка будет использоваться по умолчанию при запуске? Если да - как это сделать?
Я посмотрел на несколько смежный вопрос: Storyboards Orientation Support in Xcode 4.5 and 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
segue:
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)
Раскадровка достаточно уже занята, то это означало бы удвоение его размера. Кроме того, мне все равно придется иметь тот же код, что и выше, с теми же проблемами. Так что, действительно, нет никакой выгоды от этого предложения. –
Почему вы не можете изменить цвета из кода? Использование UIAppearrance было бы намного лучшим кандидатом для этого, чем внесение изменений в раскадровки. – jonathanpeppers
Я могу, но я бы скорее создал XSD, чтобы преобразовать мою основную раскадровку во вторую с измененными цветами при сборке и не писать код для каждого элемента, который должен быть изменен. –