これは実際には解決されていますが、なぜ私が何をしたのか分かりません。iPhone SDK - 通知が複数回発生し、複数のビューがスタックにプッシュされる
私の問題は、一度通知を送信すると、1つのイベントが複数回発生するということでした。私はスタック上のいくつかの望ましくないビューに終わった。ナットシェルで:
ユーザは、通知がデリゲート
mapItem = [[UIBarButtonItem alloc] initWithImage:mapImage style: UIBarButtonItemStylePlain target:self action:@selector(mapButtonPressed:)];
-(void)mapButtonPressed:(id)sender{
NSLog(@"Map Button Pressed");
[[NSNotificationCenter defaultCenter] postNotificationName:@"mapButtonPressed" object:nil ] ;
}
これはスタックにマップビューをプッシュする現在のビューで機能を起動から送信される、ツールバーのボタンを押します。 (結果はopenListMap機能はまだ複数回発射するものの、ということである
[self.navigationController pushViewController:mapViewController animated:YES];
:に
CultureNOWAppDelegate *delegate =
[[UIApplication sharedApplication] delegate];
[delegate.navigationController pushViewController:mapViewController
animated:YES];
:
-(void)openListMap:(NSNotification *)aNotification {
mapViewController = [[MapViewController alloc] initWithNibName:@"MapViewController" bundle:nil];
NSLog(@"Map Created");
mapViewController.searchLocation = searchLocation;
if(givenLocationType == @"input"){
mapViewController.inputLocationText = inputLocationText;
}
mapViewController.givenLocationType = givenLocationType;
CultureNOWAppDelegate *delegate =
[[UIApplication sharedApplication] delegate];
[delegate.navigationController pushViewController:mapViewController
animated:YES];
}
これが機能するようになりましたが、私はからの最後の行を変更しましたあなたはコンソールで見ることができます、ログ出力は、アプリケーションが開始されてからビューが現れたたびに「Map Created」を表示します)、最新のmapViewをthスタック。
なぜですか?なぜ最初から何度も発砲していたのですが、なぜ、すべての目的と目的が同じである2つのコードを交換して停止したのですか?
ありがとうございました。
appDelegateにnavControllerをプッシュし、このviewController(またはそれが何であれ)をnavControllerにプッシュすることとの間に意味のある違いがあります。同じnavControllerに対処しているので、同じであることを意味しますか?私は彼らがそうは思わない。 –
はい、それは私がそれを理解する方法です。しかし、私の経験はかなり限られています。あなたは実際に起こっていると信じていることを説明できますか?コードの長いほうが代替代理人を作成していますか?洞察に感謝します。 – dgig