2016-08-01 8 views
-2

У меня есть ImagePickerController в моем основном контроллере представления, который позволяет пользователю выбирать изображение. Используя это изображение, некоторые результаты загружаются в виде таблицы в том же контроллере представления.Как передать изображение для последующего сохранения в другом контроллере?

При выборе строки в представлении таблицы другой контроллер табличного представления открывается пучком строк. Когда выбрана строка из этой таблицы VC, загружается другой контроллер табличного представления со списком фильмов из TMDB api, а затем пользователь выполняет поиск фильма.

В моем приложении основные данные имеют отношение к одному изображению, связанному с некоторыми фильмами.

Так что я хотел бы знать, что является лучшим способом отслеживать выбранное изображение. Я знаю, что NSUserDefaults - не лучший подход.

+0

бы, вероятно, поможет больше для людей, давая ответы выбрать либо Objective-C или скор. –

+0

Пожалуйста, не изменяйте тег от Objective-C до Swift снова после получения ответа для Objective-C. –

ответ

2

Вы можете объявить переменную в файле заголовка целевого VC. Такие как;

@property UIImage* sourceImage; 

Перед открытием целевой VC, установите изображение цели ВК:

targetViewController.sourceImage = [UIImage ....] 

Затем используйте внутри мишени VC с:

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

2 Way

Учитывая использовать 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. 
+0

Если я не использую переменную UIImage во втором контроллере представления, не было бы лишним? – thegrandhi

+0

@thegrandhi Итак, пожалуйста, скажите мне, что вы используете? Затем я могу обновить свой ответ. –

+0

У меня есть 3 контроллера вида. изображение выбрано в первом. то фильм сохраняется в последнем контроллере представления. – thegrandhi

Смежные вопросы