我有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值设置为所选图像。
我该怎么做?
答案 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;
假设您使用正确的索引,那么将图像分配给viewImage
上AdjustViewController
的{{1}}属性。
或者,如果你想把东西压缩成尽可能少的行:
UITabBarController