2010-03-10 3 views
0

У меня есть приложение, которое использует функцию «В приложении».remove Views from SubView

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



} 

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

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

Приветствия

EDIT:

Просто, чтобы сделать вещи ясно

Я не уверен, если это делает разницу, но у меня есть мой главный экран меню, затем РМКО выполнив следующие действия с входа кнопка.

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

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

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

EDIT 2:

@Jordan Спасибо,

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

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

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

Я попытался следующие:

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

, но я получаю и ошибка вдоль линий:

ожидаемых ':' перед '' ?

ответ

1

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

// view is equal to your main view  
NSArray *subviews = [view subviews]; 
for (int i=0; i<[subviews count]; i++) 
{ 
    [[subviews objectAtIndex:i] removeFromSuperview]; 
} 
+3

Один лайнер: '[view.subviews makeObjectsPerformSelector: @selector (removeFromSuperview)];' – kennytm

0

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

[self.navigationController popToRootViewControllerAnimated:YES]; 

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

0

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

NSArray *ChildViews = [ParentView subviews]; 
for (UIView *childView in ChildViews) { 
    [childView removeFromSuperview]; 
}