Проблемы с переключением взглядов, требуется уточнение - PullRequest
0 голосов
/ 03 ноября 2011

В моем классе UIViewController я

-(void)switchToPuzzle2:(id)sender {

     p2 = [Puzzle2 new]; // p2 is a UIView

    [p1 addSubview:p2];  //p1 is UIView currently showing
    [p1 removeFromSuperview];

    [super viewDidLoad];
}

Я бы хотел поставить p2 поверх p1 или вместо p1.

Это, однако, ничего не делает (заметно).

Метод называется

Ответы [ 3 ]

2 голосов
/ 03 ноября 2011

[p1 removeFromSuperview];

просто удаляет форму p1 своего собственного суперпредставления. Поскольку вы только что добавили p2 как подпредставление p1, вы удалите оба представления.

Вы можете сделать что-то вроде

[[p1 superview] addSubview:p2];

А потом, если вы хотите удалить p1 и не пускать его под p2

[p1 removeFromSuperview];
2 голосов
/ 03 ноября 2011

в приведенном выше коде вы добавляете P2 к P1, затем удаляете P1, тем самым удаляя оба из superView P1.

Если вы пытаетесь переключить два, добавьте P2 к суперпредставлению P1,затем удалите P1.т.е.

[p1.superView addSubview: p2];
[p1 removeFromSuperview];

Кроме того, не вызывайте viewDidLoad.Это, вероятно, сведет на нет все, что вы делаете.Особенно, если вы загружаете из Nib

Удачи

1 голос
/ 03 ноября 2011

Так же, как упоминают timthetoolman и MatLecu, в вашем примере будут удалены оба представления. Тем не менее, вы говорите, что p2 все еще не виден, учитывая решение?

Мое предложение - убедиться, что рамка имеет правильный размер, чтобы вы могли видеть p2. Попробуйте установить цвет фона для каждого p1 и p2 и посмотрите, действительно ли вы не видите p2. 9/10 времени причина будет в том, что представление инициируется без фрейма. Дважды проверьте это.

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