удаление представлений из SubView

У меня есть приложение, которое использует функцию In App.

-(void) completeTransaction: (skPaymenttransaction *)transaction{



}

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

Может ли кто-нибудь предложить самый чистый и лучший способ сделать это?

Ваше здоровье

ИЗМЕНИТЬ:

Просто чтобы прояснить ситуацию

Я не уверен, имеет ли это значение, но у меня есть экран главного меню, и я делаю следующее с помощью кнопки ввода.

UIViewController *controller = [[UIViewController alloc] initWithNibName:@"NibFile" bundle:nil];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];

Затем у меня есть главный экран с кнопкой, а затем, когда пользователь нажимает на нее, он представляет им другой контроллер модального представления, как указано выше. В этом представлении есть кнопка с надписью «КУПИТЬ». Они используют клики, а затем StoreKit делает свое дело, и после завершения платежа я хочу избавиться от двух модальных контроллеров выше и остаться с экраном главного меню.

Любые идеи .. я пробовал, как указано выше

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

@Jordan Спасибо,

Но не уверен, что я делаю это правильно. Я понимаю приведенный выше код.

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

Итак, имея это в виду, как мне вернуться в главное меню.

Я пробовал следующее:

NSArray *subviews = [myAppdelegate.viewcontroller.view subviews]; 
for (int i=0; i<[subviews count]; i++) 
{ 
   [[subviews objectAtIndex:i] removeFromSuperview]; 
} 

но я получаю и ошибаюсь в строках:

ожидается ':' до '.' ?


person SteveU    schedule 10.03.2010    source источник


Ответы (3)


Это должно работать.

// view is equal to your main view    
NSArray *subviews = [view subviews];
for (int i=0; i<[subviews count]; i++)
{
   [[subviews objectAtIndex:i] removeFromSuperview];
}
person Jordan    schedule 10.03.2010
comment
Один вкладыш: [view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; - person kennytm; 10.03.2010

Если вы говорите о UIViewControllers, а не о subViews (они разные), вы можете использовать:

 [self.navigationController popToRootViewControllerAnimated:YES];

Вы либо добавляете UIViews в UIViewController, и в этом случае используйте мой код выше, либо вы нажимаете Views (например, pushViewController) поверх UIViewController, и в этом случае используйте код здесь.

person Jordan    schedule 10.03.2010

Мы должны получить удаляемые представления в массиве, чтобы мы могли удалить все с помощью перечисления.

 NSArray *ChildViews = [ParentView subviews];
 for (UIView *childView in ChildViews) {
   [childView removeFromSuperview];
 }
person Durai Amuthan.H    schedule 10.07.2013