2016-09-02 1 views
0

응용 프로그램의 모든 위치에서이 변수 값에 액세스하는 데 사용할 수있는 UIColor 변수 및 공유 인스턴스 메소드를 내 AppDelegate.h 파일에서 만들려고합니다. 내가 하나를 선택하려고 할 때 다른 색상이있는 tableview에 표시되는 클래스가 있고, AppDelegate.m-iOS의 첫 번째 인스턴스에 대한 UIColor 변수 값이 null입니다.

+ (AppDelegate *)sharedInstance { 
static dispatch_once_t onceToken; 
static AppDelegate *instance = nil; 
dispatch_once(&onceToken, ^{ 
    instance = [[AppDelegate alloc] init]; 
}); 
return instance; 
} 

여기 아래 AppDelegate.h-

+(AppDelegate *)sharedInstance; 
@property(nonatomic,strong) UIColor * darkColorC1; 

과 내 코드입니다 색상 중 하나가 NSUserDefaults에 저장됩니다. 내 AppDelegate에 변수 darkColorC1에 statements- 나는 COLOR1을 저장할 수 있어요

AppDelegate *globals = [AppDelegate sharedInstance]; 
globals.darkColorC1 = color1; 

(Userdefaults) 값 이하로 사용하여이 darkcolorc1 변수에 userdefaults에 저장된 색을 지정하는 것을 시도하고, 내가 응용 프로그램을 닫을 때 시도하고있다 그것을 다시 실행하려면 Appdelegate 메서드 -didFinishLaunchingWithOptions에서 현재 선택된 값을 얻습니다. 하지만 그 첫 번째보기 컨트롤러에 null 값을 보여줍니다 그 색상을 할당하려고하면. EG-

AppDelegate *globals = [AppDelegate sharedInstance]; 
self.view.backgroundcolor= globals.darkColorC1; 

위해 그것은 globals.darkColorC1 대한 널 (NULL) 값을 나타낸다.

또한 다른 색상을 선택하여 globals.darkColorC1 변수에 저장하고 첫 번째보기 컨트롤러를로드하려고하면 값이 null이 아닙니다. 누구든지이 문제를 해결할 수 있도록 도와주십시오. 도움을 주시면 감사하겠습니다.

+0

AppDelegate에 같이이 변수를 액세스 할 수있는 클래스를

#import "MyDataHandler.h" @implementation MyDataHandler + (MyDataHandler *) sharedDataHandler { static id _sharedHandler = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _sharedHandler = [[self alloc] init]; }); return _sharedHandler; } - (id)init { if (self = [super init]) { } return self; } @end 

을하는 .m 커스텀 클래스이거나'[[UIApplication s haredApplication] delegate]'? – Larme

+0

[[UIApplication sharedApplication] delegate] –

+0

왜 사용자 정의 init 및 사용자 정의 공유 인스턴스가 있습니까? – Larme

답변

0

AppDelegate에의 목적은 당신이, 당신이 AppDelegate 클래스 변수의 유형을 덤핑하는 이유에 대한 싱글을 만들 또한이

AppDelegate *appDelObj = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

처럼 AppDelegate에의 객체를 사용할 수 있습니다, 다음과 같이 생성 할 필요가 없습니다 응용 프로그램에서 액세스하려는 변수 유형. .H 클래스 당신의 지금

#import <Foundation/Foundation.h> 

@interface MyDataHandler : NSObject 

+ (instancetype)sharedDataHandler; 

@property(nonatomic,strong) UIColor * darkColorC1; 

@end 

에서

를 들어

지금이

[MyDataHandler sharedDataHandler].darkColorC1 
+0

확인. 지금 나는 그것을 얻었다. 제안에 감사드립니다. 하지만이 클래스가 언제 호출되는지 또는이 클래스의 메서드를 호출하는 방법을 알려주시겠습니까? –

+0

Answer - [MyDataHandler sharedDataHandler] .darkColorC1에서 언급했습니다. – Rajat

관련 문제