Я пытаюсь использовать результаты прожектора, чтобы направлять пользователя в соответствующий раздел в моем приложении.iOS: Как нажать на DetailView
В главном меню есть несколько кнопок, позволяющих перейти в разные области приложения, одним из которых является телефонный справочник, который находится внутри собственного SplitViewController
. У MasterView
есть список пользователей в TableView
, а у DetailView
есть данные о товаре.
В настоящее время у меня есть следующее в моем AppDelegate.m
.
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
if ([userActivity.activityType isEqualToString:CSSearchableItemActionType]) {
// uid = an Id field unique for each record
NSString *uid = userActivity.userInfo[CSSearchableItemActivityIdentifier];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *navController = nil;
navController = [storyboard instantiateViewControllerWithIdentifier:@"PhoneDirectory"];
if (navController != nil) {
[[[self window] rootViewController] presentViewController:navController animated:YES completion:nil];
}
}
return YES;
}
Вот моя структура, мы надеемся, что это хорошая работа, иллюстрирующая это.
Navigation Controller
|
|-- Main View
|-- About View
|
|-- SplitView Controller (StoryboardID: PhoneDirectory)
|-- Master View Controller
|-- Detail View Controller
|--Another View
То, что я хочу, чтобы представить DetailView
с информацией о пользователе. На устройствах, которые показывают MasterView
и DetailView
, я хотел бы, чтобы MasterView
выглядел так, как будто строка была нажата.
Как я могу это сделать? Как передать uid на номер MasterView
, а затем имитировать касание, чтобы имитировать касание соответствующей строки.
Примечание: мои данные на MasterView
настроен как Dictionary
из Arrays
, в случае, что имеет значение в том, как найти правильный пользователя по Uid.
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
Awesome! Благодарю. Но как я могу назвать этот метод? «AppDelegate»? «NavController» ссылается на «SplitViewController». Когда я пытаюсь использовать 'PhoneDirectoryMasterViewController * master = [[navController viewControllers] firstObject]; [master selectRowWithId: uid]; 'after' presentViewController' Я получаю сообщение об ошибке' - [UINavigationController selectRowWithId:]: unrecognized selector'. – RoLYroLLs
Хорошо, я пробовал это и, кажется, работает, но это правильный способ получить представление мастера? 'PhoneDirectoryMasterViewController * master = [[[[[NavController viewControllers] firstObject] childViewControllers] firstObject];' – RoLYroLLs
@RoLYroLLs Да, вам нужно пройти через свой 'masterViewController', перейдя в иерархию' UISplitViewController'. Как работает решение, не могли бы вы пометить его как правильный ответ? Это может быть полезно для некоторых других разработчиков. –