Используйте UISegmentedControl для переключения на MKMapView и UITableView - PullRequest
2 голосов
/ 15 марта 2012

Я делаю приложение и у меня есть контроллер представления с UISegmentedControl и желание переключаться между MKMapView и UITableView.В MKMapView я хочу отобразить карту с текущим местоположением пользователей, а в TableView я хочу перечислить некоторые данные.Вот и все.

Звучит просто, но я не знаю, как поступить, я попытался сделать свой контроллер представления контроллером просмотра таблицы, а затем добавить MKMapview, также попытался просто добавить оба представления и простое представлениеконтроллер.В любом случае, есть правильный или лучший способ сделать это?

Спасибо, ребята!

Ответы [ 4 ]

3 голосов
/ 15 марта 2012

Вы можете использовать target-action, чтобы сегментированный элемент управления скрывал одно представление и отображал другое при изменении его значения:

- (void)segmentChanged:(id)sender
{
    switch ([sender selectedSegmentIndex]) {
        case 0:
        {
            self.tableView.hidden = NO;
            self.mapView.hidden = YES;
            break;
        }   
        case 1:
        {
            self.tableView.hidden = YES;
            self.mapView.hidden = NO;
            break;
        } 
        default:
            break;
    }
}
1 голос
/ 15 марта 2012

Чистым способом будет переключение подпредставления, как только будет нажата кнопка.

[view1 removeFromSuperView];
[self.view addSubview: view2];

Для повышения производительности вы можете сохранить оба представления как переменную-член, чтобы они не создавались каждый раз.

Вы могли бы даже добавить Viewtransition, когда делаете это таким образом. (Например, переворачивание или затухание)

Также в iOS5 вы можете написать свой собственный ViewControllerContainer. Но это слишком сложно для этой задачи.

1 голос
/ 15 марта 2012

добавьте оба как subview

, тогда, когда вы захотите переключиться, просто наберите

[self.view bringSubviewToFront:YOURVIEW];
0 голосов
/ 15 марта 2012

Я бы использовал 2 navigationController.

Объявите свой первый navigationController как обычно, затем, когда пользователь коснется segmentedControl, создайте свой tableController с другим navigationController и отобразите его как modalViewController.

UINavigationController* modalController = [[UINavigationController alloc] initWithRootViewController:tableViewController];
[modalController setToolbarHidden:NO];
[self.navigationController presentModalViewController:modalController animated:YES];
[modalController release];

Затем, когда пользователь коснется сегментированного элемента управления tableViewController, просто отклоните viewController.

...