Как заставить UISegmentedControl действовать как UITabBarController? - PullRequest
3 голосов
/ 24 декабря 2010

Как я могу использовать UISegmentedControl для загрузки разных подпредставлений, когда выбраны разные сегменты? Я новичок в Objective-C и iOS программировании.

ИЛИ есть ли способ сделать UITabBarController похожим на UISegmentedControl?

Ответы [ 4 ]

3 голосов
/ 24 декабря 2010

для программного подхода

в loadView:

{
    NSArray *segments = [NSArray arrayWithObjects:@"Left", @"Right", nil];


    segmentedControl = [[UISegmentedControl alloc]initWithItems:segments];
    [segmentedControl addTarget:self
    action:@selector(changeSubViews)
    forControlEvents:UIControlEventValueChanged];
    contentView = [UIView alloc]initwithFrame:(the frame where you want the subViews to be displayed)];
    [self.view addSubView:contentView];

    }

    - (void)changeSubViews
        {
            switch(segmentedControl.selectedSegmentIndex)
            {
            case 0:
                {
                    [rightView removeFromSuperView];
                    if (leftView ==nil){leftView alloc, init;}
                    [contentView addSubView:leftView];
                    break;
                }
            case 1:
                {
                    [leftView removeFromSuperView];
                    if (rightView ==nil){rightView alloc, init;}
                    [contentView addSubView:rightView];
                    break;
                }
            }
    }
1 голос
/ 24 декабря 2010

Вы можете добавить UIToolbar к корневому контроллеру view.В нем у вас будет UISegementedControl с действиями, которые выполняет корневой контроллер.В зависимости от того, по какому сегменту щелкнули, вы можете загрузить другое представление и отобразить его под UIToolbar (и всем, что вы хотите, чтобы оно было ниже).

Надеюсь, это поможет!

0 голосов
/ 12 февраля 2011

Вы должны рассмотреть ответ крафтерма в этом посте: UISegmentedControl Best Practice

Это позволит вам поддерживать нормальное поведение ViewController (поддержка вращения, предупреждения памяти и т. Д.), В то же время допуская сегментированное управление поверх него.

0 голосов
/ 24 декабря 2010

Хорошо, для этого вы создаете два представления в своем представлении и создаете свойство для обоих в .h файле а также Присоедините IBAction к сегментированному элементу управления и напишите код, подобный этому

if(self.yourSegmentedControl.selectedSegmentIndex==0)
    {   
    view1.hidden=YES;
        view2.hidden=NO;
    }
    else if(self.categorySegmentedControl.selectedSegmentIndex==1)
    {  
    view2.hidden=YES;
        view2.hidden=NO:
    }

Надеюсь, это поможет вам.

...