Как использовать UItableView и UINavigationController в «поисковом» приложении?Лучшие практики - PullRequest
0 голосов
/ 05 сентября 2011

Я хотел бы объединить UITableView и UINaviationController в приложении, но большинство новых приложений, которые я видел, просто отправляют вас прямо в представление результатов (UITableView).Но, я думаю, что «нормальное» приложение поиска не предполагает, что у вас есть результаты на первом экране.На первом экране должна быть форма поиска с полями ввода и кнопкой, которая запускает процесс поиска и показывает некоторые результаты и навигацию.

Итак, я просто пытаюсь воспроизвести это нормальное поведение в моем приложении.Я уже создал форму поиска (конечно, на ней не показана навигация) и отдельное представление, называемое "ListingViewController", с его связанным представлением, содержащее UITableView и где, я думаю, мне следует добавить навигацию ... Следующая идеячтобы сделать DetailViewController и, возможно, и ListingMapController, чтобы показать список в GoogleMap.

Итак, где я застрял в том, как добавить этот контроллер навигации?

Некоторые предложили мне добавитьэто в делегате SearchViewController ... Но мне, конечно, не нужна навигация в форме поиска ...

Некоторые предлагали мне открыть контроллер Navigation модально ... Но я также планирую надобавление панели вкладок, позволяющей пользователю видеть другую информацию (например, о программе и т. д.), и с помощью модального контроллера Nav я не знаю, будут ли они по-прежнему видеть нижнюю панель вкладок ...

Любые предложения«Что вы думаете о передовой практике, особенно во избежание отклонения моего приложения Apple?»

Спасибо заранее за чтение ипомогая!

Стефан

1 Ответ

1 голос
/ 05 сентября 2011

Вы можете запустить навигационный контроллер с вашим View Controller в качестве корневого контроллера представления. Затем скройте панель навигации (если вам нужно). Затем вы должны добавить navigationController.view в качестве подпредставления. Это будет в основном похоже на оригинальный контроллер представления. Затем вы можете pushViewController: animated: выдвинуть результаты просмотра контроллера.

Так, например, в вашем AppDelegate (или в соответствующем контроллере представления):

Создайте свойство и ivar для UINavigationController и подключите его выходы в построителе интерфейса. Затем установите контроллер поиска в качестве корневого контроллера представления для панели навигации и добавьте его в качестве подпредставления.

MySearchViewController* searchController = [[MySearchViewController alloc] init];
self.myNavigationController = [[UINavigationController alloc] initWithRootController:searchController];
[searchController release];
self.myNavigationController.navigationBarHidden = YES;
[self.window addSubview:self.myNavigationController.view];
[self.window makeKeyAndVisible];

Тогда, конечно, в вашем searchController вы просто скажете:

ResultsViewController* myResultsViewController = [[MyResultsViewController alloc] init];
//You may want to create another init method and pass in some arguments like an array:
// [[MyResultsViewController alloc] initWithResults:results];

затем нажмите viewController

//This is in your search controller class
[self.navigationController pushViewController:myResultsViewController Animated:YES];
[myResultsViewController release];

из результатов viewController, чтобы получить обратно, вы извлекаете контроллер представления из стека контроллера представления navigationController.

//In results view controller perhaps in some IBAction for a back button:

-(IBAction)backButtonPressed:(id)sender
{

     [self.navigationController popViewControllerAnimated:YES];

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...