UISegmentedControl в PopoverController с несколькими контроллерами представления - PullRequest
0 голосов
/ 25 октября 2011

Я хотел бы иметь UISegmentedControl, встроенный в PopoverController, аналогично тому, что описано в этом вопросе SO: UISegmentedControl, встроенный в UINavigationBar / Item

Разница в том, что у меня есть разные контроллеры представлений для каждого представления, которые я хочу показать во всплывающем окне, в зависимости от выбранного индекса в сегментированном элементе управления. Я не уверен, как бы я поступил так. Всякий раз, когда я пытаюсь выдвинуть новое представление поверх корневого контроллера представления, UISegmentedControl исчезает. Я просто хотел бы переключаться между двумя viewcontrollers, сохраняя UISegmentedControl видимым. Это вообще возможно?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 26 октября 2011

Если это отдельный viewController для каждого из сегментов сегментного бара, вам нужно будет использовать контейнер viewController, который добавляет представления каждого из viewController в качестве подпредставления сам по себе или устанавливает его для представления viewController. Посмотреть. Например:

UIViewController* containerController = [[[UIViewController alloc] init] autorelease];


//Inside the viewDidLoad of the the ContainerController class, do the following:

//Initialize all three viewControllers
UIViewController* test1 = [[[UIViewController alloc] init] autorelease];
UIViewController* test1 = [[[UIViewController alloc] init] autorelease];
UIViewController* test1 = [[[UIViewController alloc] init] autorelease];

//set up the segment and add it to the container's navBar's title view.
[segmentedControl addTarget:self action:@selector(segmentValueChanged:) forControlEvents:UIControlEventValueChanged];


- (void)segmentValueChanged:(id)sender 
{

    //if first tab selected
    [self.view removeAllSubviews];
    [self.view addSubview:test1.view];

    //if second tab selected
    [self.view removeAllSubviews];
    [self.view addSubview:test2.view];

    //if third tab selected
    [self.view removeAllSubviews];
    [self.view addSubview:test3.view];

}

Вместо того, чтобы добавить его в качестве подпросмотра, вы можете просто установить self.view = test1.view. Очевидно, что вы бы использовали контейнерное представление для инициализации navController и поместили этот navController в поповер. Надеюсь это поможет!

0 голосов
/ 25 октября 2011

Если вы используете метод presentModalViewController для отображения вашего нового контроллера представления на экране, он всегда будет покрывать весь экран и все, что под ним. Вот только как это работает.

Согласно документации:

На устройствах iPhone и iPod touch вид modalViewController всегда представлены на весь экран. На iPad презентация зависит от значение в свойстве modalPresentationStyle.

Способ сделать это и по-прежнему иметь возможность контролировать расположение контроллера представления - создать собственный метод представления.

...