0

AからviewControllerBをプッシュしています。

    if(!self.controller2){

                self.controller2 = [[viewControllerB alloc] initWithNibName:@"viewControllerB" bundle:nil anUser:self.idUser aidioma:self.idioma];
            }

    [[self navigationController] pushViewController:self.controller2 animated:NO];

次に、B を A にポップします。次に、A を再度プッシュする必要がありますが、B を再度初期化するか、新しい変数を渡すために B の関数を呼び出します。次のオプションは有効かもしれませんが、成功しませんでした。

  1. controller2 と = nil を解放しますが、controller2 がまだアクティブであるため、IF 文は実行されません!
  2. init なしで新しい pars を渡すために、viewControllerB で関数を呼び出しますが、関数は呼び出されません。

何が間違っていますか?ありがとう。

4

2 に答える 2

1

次のコードは、A -> B -> A (Nav Controller の戻るボタンを使用) -> B からナビゲートするたびに、B の init メソッドが毎回呼び出されるようにします (私はここで ARC を使用しています... もしそうでない場合) t、お知らせください。例を編集します):

AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    viewControllerA *vcA = [[viewControllerA alloc] initWithNibName:@"viewControllerA" bundle:nil];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vcA];
    self.window.rootViewController = nav;
    [self.window makeKeyAndVisible];
    return YES;
}

viewControllerA のボタン アクション メソッド:

- (IBAction)moveForward:(id)sender {
    // change this line to call your custom init method.
    viewControllerB *vc = [[viewControllerB alloc] initWithNibName:@"viewControllerB" bundle:nil];
    [self.navigationController pushViewController:vc animated:YES];
}
于 2012-11-23T13:36:15.237 に答える
0

適切に説明しているNSNotificationCenter このリンクを確認してください。

Objective-C の NSNotificationCenter を介してメッセージを送受信しますか?

クラス A でこのコードを使用しますviewDidLoad

[[NSNotificationCenter defaultCenter] addObserver:self
        selector:@selector(receiveTestNotification:) 
        name:@"TestNotification"
        object:nil];

クラス B の pop 関数で次のコードを使用します。

 [[NSNotificationCenter defaultCenter] 
        postNotificationName:@"TestNotification" 
        object:self];
于 2012-11-23T13:26:01.413 に答える