У меня есть приложение на основе шаблона Utility (т.е. контроллеры основного и флип-вида).Перевернутый вид позволяет выбрать определенный элемент для использования на главном экране.Пока - отлично работает.
Теперь я попытался добавить пользовательский URL.Кое-что с эффектом: myapp://itemID=40
, которое в основном скажет основному представлению: «не нужно переворачивать - вы будете иметь дело с пунктом 40».
Я зарегистрировал схему типа URL как «myapp
"и добавил следующий метод к делегату приложения:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
if (!url) {
return NO;
}
NSString *urlString = [url absoluteString];
NSLog(@"URL received: %@", urlString);
NSString *itemID = [urlString stringByReplacingOccurrencesOfString:@"myapp://itemID=" withString:@""];
NSLog(@"Item received: %@", itemID);
[_mainViewController setStartupItem:itemID];
return YES;
}
Как видите, itemID
установлен в свойство с именем startupItem
в mainViewController
.
Затем я добавил одну строку в обычный метод application
, чтобы убедиться, что startupItem
будет nil
в случае отсутствия URL:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Make sure URL string is empty
[_mainViewController setStartupItem:nil];
// Override point for customization after application launch.
// Add the main view controller's view to the window and display.
self.window.rootViewController = self.mainViewController;
[self.window makeKeyAndVisible];
return YES;
}
И в MainViewController.m я добавил код для обработки элементана событие viewDidLoad
.
И вот моя проблема: эта схема прекрасно работает, если приложение запускается с URL-адреса в первый раз.Если он уже запущен, то мы никогда не достигнем viewDidLoad
снова и поэтому не обрабатываем этот конкретный элемент, а продолжаем, как будто ни один не был пройден.
Мой скромный вопрос: какой UIViewController
я должен поставитьмой код обработки в?Или я все это неправильно подхожу?Должно ли это быть обработано в моей модели?
Как всегда, заранее спасибо за ваше время!
Парень