сегментированное управление с двумя представлениями

во-первых, я определяю два представления в моем ViewController.

@interface ViewController : UIViewController
{
    UIView *view1;
    UITableView *view2;
}

Я хочу переключить два представления, используя сегментированное управление. UIview показывает кнопки (изображения), а другой показывает их в списке.

Но у меня есть некоторые проблемы.

Я не знаю, как контролировать два взгляда. Я обнаружил, что сделал все объекты на [self.view].

Я плохо понимаю отношения между суперпредставлением и подпредставлением. Теперь я хочу установить их только на view1, я не знал, как это реализовать.

Большое спасибо.


person user1535023    schedule 19.07.2012    source источник


Ответы (2)


Что-то вроде этого? ...

-(IBAction)segmentChanged:(UISegmentedControl*)sender {
    if ([sender tag]==0) {
        [UIView animateWithDuration:0.5 animations:^{
            [view1 setAlpha:1.0];
            [view2 setAlpha:0.0];
        }];
    } else if ([sender tag]==1) {
        [UIView animateWithDuration:0.5 animations:^{
            [view1 setAlpha:0.0];
            [view2 setAlpha:1.0];
        }];
    }
}

Вместо setAlpha вы можете использовать setFrame для перемещения вида из видимой области...

person xapslock    schedule 19.07.2012
comment
вместо установки альфы или рамки вы также можете переключать видимость представлений с помощью свойства .hidden UIVIew. - person Ken Toh; 19.07.2012

Я не проверял код, но он должен работать: -

-(IBAction)segmentChanged:(UISegmentedControl*)sender {
    if (sender.selectedSegmentIndex == 0) {
        view1.alpha = 0;
        view1.hidden = NO;
        [UIView animateWithDuration:0.5 animations:^{
            [view1 setAlpha:1.0];
            [view2 setAlpha:0.0];
        } completion:^(BOOL finished){ [view2 setHidden:YES]; }];
    } else {
        view2.alpha = 0;
        view2.hidden = NO;
        [UIView animateWithDuration:0.5 animations:^{
            [view2 setAlpha:1.0];
            [view1 setAlpha:0.0];
        } completion:^(BOOL finished){ [view1 setHidden:YES]; }];
    }
}

и в наборе viewDidLoad

view2.hidden = YES;
self.segmentControl.selectedSegmentIndex = 0;
person Yogesh Maheshwari    schedule 19.07.2012
comment
э... Большое спасибо. И как сделать сегментированную кнопку видимой в view2? ru... мое табличное представление еще не инициализировано.... Сейчас я заполняю ячейки... - person user1535023; 19.07.2012
comment
сегментированная кнопка, view1 и view2 должны быть подвидами основного представления вашего viewController - person Yogesh Maheshwari; 19.07.2012
comment
Просто используйте .hidden ИЛИ .alpha, а не оба, это бесполезно. - person xapslock; 19.07.2012
comment
Установка нулевого альфа-значения явно скроет представление, но это представление все еще будет там, и оно будет принимать события касания, поэтому вам нужно удалить представление из его родительской иерархии или установить для его скрытого значения значение YES. - person Yogesh Maheshwari; 20.07.2012