如何传递图像以便稍后保存在另一个视图控制器中?

How to pass image to be later saved in another view controller?

我的主视图控制器中有一个 imagePickerController,它允许用户 select 图片。使用这张图片,一些结果被加载到同一视图控制器的 table 视图中。

当 table 视图中的一行被 select 编辑时,另一个 table 视图控制器被打开,其中包含一堆字符串。当 table VC 中的一行被 select 编辑时,另一个 table 视图控制器将加载来自 TMDB api 的电影列表,然后用户滑动保存电影。

在我的应用中,核心数据有单张图片与一些电影相关的关系。

所以我想知道跟踪图像的最佳方式是什么 selected。我知道 NSUserDefaults 不是最好的方法。

您可以在目标 VC 的头文件中声明变量。如;

@property UIImage* sourceImage;

在打开目标VC之前,设置目标VC的图像:

targetViewController.sourceImage = [UIImage ....]

然后在内部目标 VC 中使用:

if (_sourceImage != nil){
   _sourceImage // Your passed image
}

第二种方式

正在考虑使用 Singleton。

创建一个新的NSObject并将其命名为Singleton

.m 文件中包含 init

+ (id)sharedManager {
    static Singleton *sharedMyManager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedMyManager = [[self alloc] init];
    });

    return sharedMyManager;
}

- (id)init {
    if (self = [super init]) {

    }
    return self;
}

.h文件中,定义

+ (id)sharedManager;
@property UIImage* mainImage;

在视图控制器中,#import "Singleton.h"然后初始化Singleton并分配您的图像。

第 3 次 VC,再次 #import "Singleton.h"

现在您可以到达

Singleton* si = [Singleton sharedManager];
si.mainImage = // Your image. Check if it's nil or not before use.