我的主视图控制器中有一个imagePickerController,允许用户选择图像。使用此图像,某些结果将加载到同一视图控制器的表视图中。
当选择表视图中的行时,将打开另一个表视图控制器,其中包含一串字符串。当选择此表VC中的一行时,将加载另一个带有TMDB api电影列表的表视图控制器,然后用户滑动以保存电影。
在我的应用中,核心数据具有与某些电影相关的单张图片的关系。
所以我想知道跟踪所选图像的最佳方法是什么。我知道NSUserDefaults不是最好的方法。
答案 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.