0

アプリ内機能を使用するアプリがあります。

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



}

上記のメソッドが呼び出されたら、すべてのサブビューを削除して、メイン メニュー ウィンドウ (アプリの最初のビュー) に戻りたいと思います。

誰でもこれを行うための最もクリーンで最良の方法を提案できますか?

乾杯

編集:

物事を明確にするために

これが違いを生むかどうかはわかりませんが、メインメニュー画面があり、Enterボタンを使用して次のことを行っています。

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

次に、ボタンのあるメイン画面があり、ユーザーがそれをタップすると、上記のように別のモーダル ビュー コントローラーが表示されます。このビューには、BUY と書かれたボタンがあります。彼らはこれをクリックして使用し、StoreKit がビジネスを行い、支払いが完了したら、上記の 2 つのモーダル コントローラーを取り除き、メイン メニュー画面を残します。

任意のアイデア..上記のように試しました

編集2:

@ジョーダンありがとう、

しかし、これを正しく行っているかどうかはわかりません。上記のコードを理解しました。

しかし、アプリを起動すると、アプリのデリゲートがメイン メニューであるビューコントローラーを読み込みます。次に、別のビューに移動するボタンがあり、ユーザーがロックされていない機能をクリックすると機能があり、ストアがオンになっている別のビューコントローラーが表示されます。

これを念頭に置いて、メインメニューに戻るにはどうすればよいですか。

私は次のことを試しました:

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

しかし、私は次の行に沿ってエラーを取得します:

「.」の前に「:」が必要です ?

4

3 に答える 3

1

これはうまくいくはずです。

// view is equal to your main view    
NSArray *subviews = [view subviews];
for (int i=0; i<[subviews count]; i++)
{
   [[subviews objectAtIndex:i] removeFromSuperview];
}
于 2010-03-10T12:19:28.447 に答える
0

サブビューではなくUIViewControllerについて話している場合(それらは異なります)、次を使用できます。

 [self.navigationController popToRootViewControllerAnimated:YES];

UIViewをUIViewControllerに追加する場合は、上記のコードを使用するか、UIViewControllerの上にPushViews(pushViewControllerなど)を追加する場合は、ここのコードを使用します。

于 2010-03-10T14:16:06.663 に答える
0

列挙によってすべてを削除できるように、ビューを配列で削除する必要があります

 NSArray *ChildViews = [ParentView subviews];
 for (UIView *childView in ChildViews) {
   [childView removeFromSuperview];
 }
于 2013-07-10T16:18:07.283 に答える