将图像从一个视图设置为另一个视图4.4

时间:2012-08-29 18:42:45

标签: iphone objective-c ios xcode uiimageview

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

我该怎么做?

2 个答案:

答案 0 :(得分:1)

编辑:要在AppDelegate中设置图像,您必须在AppDelegate中为UIImage *图像创建属性并分配如下图像:

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

}

传递数据的快捷方式是向app delegate添加属性,然后使用以下命令从视图控制器调用app delegate:

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

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


您可能需要考虑NSNotificationCenter(参考);您将一个viewcontroller注册到应用程序通知中心,并在进行选择时发送通知。收到通知后,另一个viewcontroller会相应地更新自己

详情请参阅this链接

答案 1 :(得分: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;

假设您使用正确的索引,那么将图像分配给viewImageAdjustViewController的{​​{1}}属性。

或者,如果你想把东西压缩成尽可能少的行:

UITabBarController