2013-11-01 34 views
1

我有两个ViewControllers。如何通过Singleton设置/获取UIImageView.image?

FirstViewController具有UILabels和UIImageViews。也从它的类生成一个单例。 SecondViewController具有该Singleton的调用,并且应该从FirstViewController获取UILabels和UIImageView的值。

NSString工作,UILabel不。

例如,访问的NSString在SecondviewController与“sharedFirstViewController.nsstringvarname”我可以获取和设置值。 这工作正常!

试图与的UILabel这样的一样:“sharedFirstViewController.uilabelvar.text”我好好尝试一下可以设置或获取该UILable的价值。 这不适用!

UI-Objects有什么特别之处吗? 如果有人能帮助我,那会很棒。 谢谢!

编辑:

在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

显示你的代码你如何使单身人士类,它的变量 – Tirth

回答

0

我敢肯定你忘了G在单例类的init方法中分配给UIImageview * pic。那是因为你的代码正在运行,但没有任何崩溃和警告。如果你调试你的代码,你会得到imageview内存分配0X0。核实。

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

在FirstViewController.m类中写上述方法。他们不需要在UIImageView * pic之前编写IBOutlet,因为您在生成单例实例时没有提及您的viewcontroller nib。无论何时在xib中处理UI时都使用IBOutlet。

+0

尝试过,但也没有得到它的作品。为什么我需要这个用于UIImageView,而NSString没有这个工作? – user2355509

+0

在sharedFirstViewController.pic.image上设置断点=图片线跟踪singlton类变量分配并打印pic的描述并显示调试器输出。 – Tirth

+0

用init方法显示你的代码你试过什么使用更新问题。 – Tirth

相关问题