どのように変更UIImageのUIImageViewからsubview?
-
21-09-2019 - |
質問
を変更したい画像を表示するためのビューからポップアップダイアログの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]
が非常に不審である。