Работа с представлениями в нескольких окнах - проблемы с removeFromSuperView при закрытии второго окна

Здравствуйте, у меня есть вид, который отображается при нажатии кнопки, это работает нормально, если я открываю второе окно, вид работает нормально, и я могу вернуться к предыдущему окну и использовать вид, как я использовал removeFromSuperview.

Однако моя проблема в том, что если я закрываю последнее открытое окно, представление больше не работает в первом окне, однако, если я открываю новое окно, оно снова работает в первом окне.

Как заставить вид продолжать работать, когда одно из окон было закрыто?

Спасибо за вашу помощь!

Вот код, который я использую:

   -(IBAction) ShowView:(id) sender{
        [myView setHidden:FALSE];

        if ([myView isInFullScreenMode]){
            [myView exitFullScreenModeWithOptions:nil];

        }
        else{   
            [myView enterFullScreenMode:[[myView window] screen] withOptions:nil];

            for (NSView *view in [NSArray arrayWithArray:[myView subviews]]){
                [view removeFromSuperview];
                [myView addSubview:view];
            }
        }
    }

1 ответ

Вы не указали, что означает "представление не работает", но я предполагаю, что оно не появляется, когда вы этого ожидаете.

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

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

Другие вопросы по тегам