質問

を変更したい画像を表示するためのビューからポップアップダイアログの4~6アイコン(想像のように変化するイメージは、メッセンジャーします。の実施このモーダルポップアップが新たなビューでIB、不透明度を背景に、その負荷としてsubview:

    IconsViewController *iconsViewController = [[IconsViewController alloc] initWithNibName:@"IconsView" bundle:nil];
[self.view addSubview:iconsViewController.view];

その場合、ユーザに触れるアイコンをしていま

- (IBAction)iconIsSelected:(id)sender {
switch ([sender tag]) {
    case 1:
        [(ParentViewController*)[self superview] changeIcon];
        break;
    case 2:
        // same here..
        break;
    default:
        break;
}
[self.view removeFromSuperview];
[self release];

}

のchangeIconだけで設定します image に対応するアイコンで表します。でお分かりだと思うが、これは労働のchangeIconメッセージなのです。いかにしてるわけではありませんので間違っているのは、お役に立てるようよろしくお願いいたします!

役に立ちましたか?

解決

お持ちの複数の選択肢はこちら---

最初はプロパティを作成しますおIconsViewControllerのタイプ ParentViewController*, 例えば:

@property (readwrite,nonatomic,assign) ParentViewController* parentController; // weak reference

こ低下させると:

  • readwrite したいのでアクセスできるようにな価値 [self parentController] も変更で [iconsViewController setParentController:self]
  • nonatomic いをしてほしいほしいしてほしいも気になスレッド
  • assign この"弱い基準"の親会社を保有することはありませんの子供です。場合はそれぞれ retain その他のうえで、メモリ漏えい以降でない限り明示的に表すと保輪がなオブジェクトのヒットゼロを維持す。

読み込んだ場合からペン先のプロパティを設定:

IconsViewController *iconsViewController = [[IconsViewController alloc] initWithNibName:@"IconsView" bundle:nil];
iconsViewController.parentController = self;

その後、呼び出し内 iconIsSelected このように:

[[self parentController] changeIcon];

することが可能ですの作成を委譲プロトコル:

@protocol IconViewSelectedDelegate (NSObject)

- (void) changeIcon;

@end

そのプロトコルプロパティとしてではなく、親ビューコントローラータイプです。これは抽象ですが、デザインのクリーナーです。の親ビューコントローラーを実装する委譲プロトコルとして、多くのです。

別のオプションを使用 NSNotificationCenter 公表/加イベントからのパロアルトネットワーク。この"一ゆ"カップリングとの間には、二つのオブジェクトが、それを失わせないアイテムこのシナリオ。

他のヒント

ビューのスーパービューではなく、ビューコントローラで、まだあなたは、クラスParentViewControllerのものであるとスーパービューをキャスト。ビューには何のスーパーを持っていない場合、それはnilを返し、nilにメッセージが(あなたがそこにクラッシュしていない理由を説明する)は、OPSません。

BTW、端部でその[self release]が非常に不審である。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top