0

我有 2 个视图,它们是 UITabBarController 的一部分。对于每个视图,我声明了一个不同的类。

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 将 viewImage 的值设置为AdjustViewController所选图像。

我该怎么做?

4

2 回答 2

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];

}

传递数据的快速而肮脏的方法是向应用程序委托添加属性,然后使用以下方法从视图控制器调用应用程序委托:

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

检索变化数据的最佳位置是在 viewWillAppear 控制器方法中。这样,每次用户切换到该选项卡时,数据都会更新。


您可能需要考虑 NSNotificationCenter(参考);您在应用程序通知中心注册一个视图控制器,并在做出选择时发送通知。当收到通知时,另一个视图控制器会相应地更新自己

请参阅链接的更多信息

于 2012-08-29T18:55:29.157 回答
1

由于这两个都在 tabBarController 中,您可以使用tabBarController来获取对另一个视图控制器的引用并从那里访问它的属性。

像这样:

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 回答