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

时间:2016-08-01 14:42:30

标签: ios objective-c swift uitableview uiimagepickercontroller

我的主视图控制器中有一个imagePickerController,允许用户选择图像。使用此图像,某些结果将加载到同一视图控制器的表视图中。

当选择表视图中的行时,将打开另一个表视图控制器,其中包含一串字符串。当选择此表VC中的一行时,将加载另一个带有TMDB api电影列表的表视图控制器,然后用户滑动以保存电影。

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

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

1 个答案:

答案 0 :(得分:2)

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

@property UIImage* sourceImage;

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

targetViewController.sourceImage = [UIImage ....]

然后使用内部目标VC:

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

第二路

考虑使用Singleton。

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

init文件中加入.m

+ (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.