【问题标题】:How to pass image to be later saved in another view controller?如何传递图像以稍后保存在另一个视图控制器中?
【发布时间】:2016-12-06 16:53:41
【问题描述】:

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

When a row in the table view is selected another table view controller is opened with a bunch of strings. When a row from this table VC is selected, another table view controller with a list of movies from TMDB api is loaded and then the user swipes to save a movie.

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

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

【问题讨论】:

  • 对于那些选择objective-c或swift的人来说可能会有所帮助。
  • 在得到 Objective-C 的答案后,请不要再将标签从 Objective-C 更改为 Swift。

标签: ios objective-c swift uitableview uiimagepickercontroller


【解决方案1】:

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

@property UIImage* sourceImage;

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

targetViewController.sourceImage = [UIImage ....]

然后在目标 VC 中使用:

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

第二种方式

考虑使用单例。

创建一个新的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 并分配您的图像。

在第三次 VC,#import "Singleton.h" 再次

现在你可以到达

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

【讨论】:

  • 如果我没有在第二个视图控制器中使用 UIImage 变量,那会不会是多余的?
  • @thegrandhi 所以请告诉我你在用什么?然后我可以更新我的答案。
  • 我有 3 个视图控制器。在第一个中选择图像。然后在最后一个视图控制器中保存一部电影。
  • @thegrandhi 嗯,这是一种传递参数的方法。另一种方法是考虑使用单例。我将更新我的第二种方式的答案。
  • @thegrandhi 请查看stackoverflow.com/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
相关资源
最近更新 更多