0

UITabBarControllerの一部である2つのビューがあります。ビューごとに、異なるクラスを宣言しました。

PictureViewController方法で:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
    [imagePicker dismissModalViewControllerAnimated:YES];
    [imageField setImage:image];
}

そして別のビュー:AdjustViewController別のUIImageを使用:

@property (weak, nonatomic) IBOutlet UIImageView *viewImage;

上記のメソッドで、didFinishPickingImageを使用しAdjustViewControllerて、選択した画像にviewImageの値を設定します。

どうすればいいですか?

4

2 に答える 2

1

これらは両方ともtabBarControllerにあるため、を使用tabBarControllerして他のView Controllerへの参照を取得し、そこからそのプロパティにアクセスできます。

そのようです:

NSArray *theViewControllers = [self.tabBarController viewControllers];

//On this line, you will need to use the Index of the AdjustViewController (0 is on the left and then they go in order from left to right.)
AdjustViewController *adjViewController = (AdjustViewController *)[theViewControllers objectAtIndex:0];

adjViewController.viewImage.image = image;

これにより、適切なインデックスを使用していると仮定して、のviewImageプロパティに画像が割り当てられます。AdjustViewControllerUITabBarController

または、物事をできるだけ少ない行に圧縮したい場合:

((AdjustViewController *)[[self.tabBarController viewControllers] objectAtIndex:0]).viewImage.image = image;
于 2012-08-29T19:17:30.717 に答える
1

編集:AppDelegateで画像を設定するには、AppDelegateでUIImage * imageのプロパティを作成し、次のように画像を割り当てる必要があります。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{ 
   MyAppDelegateClass *appDelegate = (MyAppDelegateClass  *)[[UIApplication sharedApplicaton] delegate];
  appDelegate.image=image; //your picked image here

  [imageField setImage:image];
  [imagePicker dismissModalViewControllerAnimated:YES];

}

データを渡すための手っ取り早い方法は、アプリデリゲートに属性を追加してから、次のコマンドを使用してViewControllerからアプリデリゲートを呼び出すことです。

MyAppDelegateClass *appDelegate= (MyAppDelegateClass  *)[[UIApplication sharedApplicaton] delegate];
viewImage.image=appDelegate.image;

変化するデータを取得するのに最適な場所は、viewWillAppearコントローラーメソッドです。そうすれば、ユーザーがそのタブに切り替えるたびにデータが更新されます。


NSNotificationCenter(リファレンス)を検討することをお勧めします。1つのビューコントローラをアプリケーション通知センターに登録し、選択が行われたときに通知を送信します。通知を受信すると、他のViewControllerはそれに応じて自身を更新します

このリンクで詳細を参照してください

于 2012-08-29T18:55:29.157 に答える