ImageView 将信息从类传递到其他类

Posted

技术标签:

【中文标题】ImageView 将信息从类传递到其他类【英文标题】:ImageView pass the information from class to other class 【发布时间】:2014-07-11 10:39:29 【问题描述】:

我使用自定义相机选择器创建了一个应用程序,我尝试将覆盖图像从一个类传递到其他类,下面是关于我的代码的更多信息:

使用情节提要:

UICollectionView 使用来自网络的图像加载 .plist,然后使用 Segue Identify 将信息传递到另一个视图。

在我的第二个视图中,我看到我选择的图像、共享按钮和相机按钮,如果我点击相机按钮在单独的 .xib 中加载 mu 自定义相机视图,她我想将我的第一个选择的图像传递给 UIImageView .xib

这是我的代码:

3个控制器的流程是:

来自UITableView 的第一个控制器

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

    if([@"goToShare" isEqualToString:segue.identifier]) 
        NSIndexPath *index = [self.tableView indexPathForCell:sender];
        [[segue destinationViewController] setImgSelected:(self.loadImage)[index.row]];
    


这里将我的图片设置为NSMutableDictionary *imgSelected;

在我的第二个控制器中,我将信息输入到:

- (void)viewDidLoad 

    NSString *url = (self.imgSelected)[@"image"];
    NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];
    imageViewPick.image = [[UIImage alloc] initWithData:data];

    [super viewDidLoad];

现在我想从第二个控制器 imageViewPick.image 将第三个控制器中的相同图像传递给我的 imageOverlay.image

当点击相机按钮并垂直加载封面时我的.xib

- (IBAction)getPhoto:(id) sender 

    CustomCameraViewController *camController = [[CustomCameraView alloc] initWithNibName:@"CustomCameraView" bundle:nil];
    camController.delegate = self;

    [self presentViewController:camController animated:YES completion:^

    ];

我尝试通过以下方式获取imageViewPick.image

MyFirstView *imgDelegate= (MyFirstView  *)[[UIApplication sharedApplication] delegate];
self.imageOverLay.image = imgDelegate.imageViewPick.image;

但无法正常工作并且应用程序崩溃。

知道如何将信息从firstClass.m 传递到secondClass.m 吗?

【问题讨论】:

Passing Data between View Controllers的可能重复 我在第二步中没有转义,我必须使用 'initWithNibName' 来传递信息 请也放崩溃日志 【参考方案1】:

initWithNibName 方法返回UIViewController,让我们调用MySecondViewController 的一个实例。将UIImage 属性添加到MySecondViewController。然后,一旦MySecondViewController 的实例被初始化,将UIImage 属性设置为您想要的图像。例如:

MySecondViewController.h

...
@property (nonatomic, weak)UIImage *overlayImage;
...

MyFirstView.m

...
MySecondViewController *secondViewController = [MySecondViewController initWthNibName:<insert name of xib> bundle:<probably nil>];
secondViewController.overlayImage = self.imageOverlay.image;
...

然后您可以使用self.overlayImage 访问MySecondViewController 中的叠加图像

【讨论】:

【参考方案2】:

在 你必须设置 camController.imageOverLAy.image = self.imageViewPick.image;在当前 camController 之前。 希望对你有帮助!

[[UIApplication sharedApplication] delegate] returns a pointer to the AppDelegate.

【讨论】:

如果您有 3 个控制器,并且想要将信息从第一个控制器传递到第三个控制器,您首先需要将该信息传递给第二个控制器,然后当您推送第三个控制器时,您必须传递从第二个控制器到第三个控制器的信息。 (这意味着您必须在第二个视图中创建另一个属性来存储您要传递的信息) 不,我只想将信息从第二个控制器传递给第三个 您可以在第三个视图控制器中创建一个公共实例变量并从第二个视图控制器设置它,然后再呈现第三个视图控制器。这是在两个视图控制器之间传递数据的最简单方法。 好的。然后在第二个控制器中创建一个公共属性 @property (strong, nonatomic) MyFirstController *parentController; (不要忘记导入您的第一个控制器)。在第一个控制器中,在呈现第二个控制器之前,设置 secondController.parentController = self;然后,在第二个控制器中推送第三个控制器时,您只需设置:thirdController.imageOverLay.image = self.parentController.imageViewPick.image;

以上是关于ImageView 将信息从类传递到其他类的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA:将集合从类传递到模块问题

在Android中,如何将数据从类传递到相应的布局/片段文件?

将 API 数据从类传递给 GetX 控制器

如何在 React Native 中将矢量从类组件传递到另一个组件?

如何将变量从 ViewController 类传递给其他结构?

如何将数据从异步类传递到主活动类