Невозможно удалить представление, используя метод removeFromSuperview - PullRequest
0 голосов
/ 22 августа 2011

Я не могу удалить просмотр. Я добавляю представление, используя метод addubview, но когда я использую RemoveFromSuperView.

// Здесь я добавляю вид с кнопки входа в систему

medicalViewObject=[[MedicalInfoViewController alloc] initWithNibName:@"MedicalInfoViewController" bundle:nil];
    [self.view addSubview:medicalViewObject.view];

// здесь я пишу RemoveFromSuperView в другом ViewController

-(void)BackToMainView
{
    [self.view removeFromSuperview];
}

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Это не работает, потому что вы отправляете removeFromSuperview неправильному объекту просмотра.Это то, что вам нужно:

[medicalViewObject.view removeFromSuperview];

РЕДАКТИРОВАТЬ:

Ваш вопрос предполагает, что у вас есть представление (поскольку вы не включили название этого представления в свой вопрос, я просто позвонюэто MainView), а затем вы добавляете подпредставление medicalViewObject для вашего MainView.У вас также есть вызов метода «BackToMainView», который вы хотите выполнить функцию removeFromSuperview.Ваш вопрос предполагает, что некоторые действия пользователя в вашем medicalViewObject (например, нажатие кнопки) должны вызывать метод «BackToMainView».

Если это все правильно, то мой ответ выше верен.Но на основании вашего комментария кажется, что вам также необходимо реализовать протокол делегата в вашем medicalViewObject, а затем заставить ваш «MainView» принять протокол.

В своем объявлении делегата в своем medicalViewObject вынужно иметь вызов метода, подобный этому:

-(void)backButtonWasPressed;

, и в реализации вашего MainView он должен выглядеть примерно так:

-(void)backButtonWasPressed
{
    [medicalViewObject.view removeFromSuperview];
}

Так что теперь, какое бы пользовательское действие вы не использовалив вашем medicalViewObject для возврата к главному виду (будь то кнопка или какой-либо другой объект) необходимо вызвать следующее:

[delegate backButtonWasPressed];

В зависимости от вашей ситуации это может выглядеть немного иначе, но это довольноОбщий способ выполнить то, что вы пытаетесь сделать.Надеюсь, это поможет.

1 голос
/ 22 августа 2011

когда вы звоните [self.view removeFromSuperview];, вы говорите любому контроллеру представления, в котором находитесь, удалить свой собственный вид. Вы должны вызывать эту линию изнутри того же MedicalInfoViewController или сообщать medicalViewObject извне, чтобы удалить его вид, например [medicalViewObject.view removeFromSuperview];

...