2013-11-01 3 views
1

У меня есть два ViewControllers.Как установить/получить UIImageView.image через Singleton?

FirstViewController имеет UILabels и UIImageViews. Также генерируется Singleton из его класса. SecondViewController имеет вызов этого Singleton и должен получать значения UILabels и UIImageViews от FirstViewController.

Работы NSString, UILabel нет.

Например, доступ к NSString в SecondviewController с «sharedFirstViewController.nsstringvarname» Я могу получить и установить значение. Это прекрасно работает!

Попытка же самое с UILabel, как это: «sharedFirstViewController.uilabelvar.text» Я doens't можно установить или получить значение этого UILable. Это работает НЕ!

Есть ли что-нибудь особенное с UI-объектами? Было бы здорово, если кто-то может мне помочь. Спасибо!

EDIT:

в FirstViewController.h

+ (id)sharedFirstViewController; 
@property (copy, nonatomic) NSString *path; 
@property (strong, nonatomic) IBOutlet UIImageView *pic; 

в FirstViewController.m

@synthesize path= _path; 
@synthesize pic = _pic; 


- (id)init { 
    if (self = [super init]) { 
     _pic = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 200)]; 
    } 
    return self; 
} 

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

в SecondViewController.m

#import "FirstViewController.h" 

- (void)viewDidLoad 
{ 

FirstViewController * sharedFirstViewController = [FirstViewController sharedFirstViewController]; 

NSLog(@"this is NSString from FVC: %@" sharedFirstViewController.path); //works 

UIImage * picture = [UIImage imageWithContentsOfFile:sharedFirstViewController.path]; 
     sharedFirstViewController.pic.image = picture;  // does´t work 

} 
+0

код и конкретные ошибки помогут выработать то, что не так – wattson12

+0

показать вам код, как вы делаете класс singleton, и он varibles – Tirth

ответ

0

Я уверен, что вы забыли г ive для UIImageview * pic в методе init метода singleton. Это потому, что ваш код работает, но без какого-либо сбоя и предупреждения. Если вы отлаживаете свой код, вы получите выделение памяти изображения 0X0. Проверь это.

- (id)init { 
    if (self = [super init]) { 
     _pic = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 200)]; 
    } 
    return self; 
} 

напишите выше метод в классе FirstViewController.m. Их не нужно писать IBOutlet перед UIImageView * pic, потому что вы не упоминаете свой контур viewcontroller во время генерации одиночного экземпляра. Используйте IBOutlet, когда вы работаете с пользовательским интерфейсом в xib.

+0

пробовал, но и не работает. Зачем мне это нужно для UIImageView, и NSString работает без этого? – user2355509

+0

Задайте точку останова на sharedFirstViewController.pic.image = трассировка строки строки singlton class variable и распечатайте описание pic и покажите мне, что вывод отладчика. – Tirth

+0

покажите свой код с помощью метода init, что вы пытались использовать для обновления. – Tirth

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