Как убрать вид из окна?

Я использую Cocos2D в качестве основного фреймворка. В некоторых случаях я хочу, чтобы Cocos2D загрузил файл пера и имел вид:

window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
TargetPlayerViewController *myController = [[TargetPlayerViewController alloc]initWithNibName:@"TargetPlayerViewController" bundle:nil];
[window addSubview:[myController view]];
[window makeKeyAndVisible];

Это работает, как и ожидалось, и показывает файл TargetPlayerViewController. Замечательный!

Что мне нужно знать, так это: как только это представление будет загружено, как я могу удалить представление? Я пробовал несколько разных способов, но все они приводят к сбою программы.

Для проверки у меня есть кнопка в представлении, которая запускает этот метод:

- (IBAction)GTFOnow:(id)sender {
    NSLog(@"GFTO");
    //window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    //[self.view removeFromSuperview];
    //[window makeKeyAndVisible];
}

GTFOnow — это метод в TargetPlayerViewController. При его вызове текущее подпредставление (которое было вызвано в коде Cocos2D выше) должно быть удалено из окна.


person Ethan Mick    schedule 29.03.2010    source источник
comment
В этом методе представление должно удалить себя из представления. Это очень сбивает с толку. Я полагаю, вы имеете в виду, что контроллер представления должен удалить представление из окна?   -  person Felixyz    schedule 29.03.2010


Ответы (1)


Прежде всего, вы не должны создавать новое окно только потому, что хотите удалить подпредставление. Во-вторых, что бы ни случилось, это не должно привести к сбою приложения. В каком классе у вас есть метод GTFOnow? Я полагаю, в TargetPlayerViewController классе?

person Felixyz    schedule 29.03.2010
comment
Метод GTFOnow находится в TargetPlayerViewController. Я надеялся, что вид может исчезнуть из окна. - person Ethan Mick; 29.03.2010
comment
Да, вид можно удалить из окна (хотя его удаляет контроллер, так что на самом деле он не удаляет себя). Но вам не нужно создавать новое окно, как в этом коде. Вместо этого вам нужно получить ссылку на окно, которое было создано при запуске, в вашем делегате приложения. Это окно, дочерним элементом которого является представление, и именно из него вы хотите его удалить. В общем, вы очень редко хотите создать второе окно в приложении для iPhone. - person Felixyz; 30.03.2010