1

에 응답하지. 메서드가 호출되지 않습니다AppDelegate에 내가 관찰자를 추가 해요 방법은 다음과 나는 CRToast 알림</p> <p>을 게시 할 수 내 애플 리케이션의 AppDelegate에를 사용하고 싶습니다 NSNotification

dispatch_async(dispatch_get_main_queue(), ^{ 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"No_Connection_Available" object:nil]; 
     }); 
    } 

: 여기

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(noConnectionNotification) 
               name:@"No_Connection_Available" object:nil]; 

} 

는이

-(void)noConnectionNotification{ 
    NSLog(@"received notification"); 
    NSString *notificationString = @"Unable to reach server. Changes will be cached."; 
    NSDictionary *options = @{kCRToastTextKey : notificationString, 
           kCRToastNotificationTypeKey : @(CRToastTypeStatusBar), 
           kCRToastTextAlignmentKey : @(NSTextAlignmentCenter), 
           kCRToastBackgroundColorKey : [UIColor redColor], 
           kCRToastAnimationInDirectionKey : @(CRToastAnimationDirectionTop), 
           kCRToastAnimationOutDirectionKey : @(CRToastAnimationDirectionTop), 
           kCRToastTimeIntervalKey : @(2), 
           }; 
    [CRToastManager showNotificationWithOptions:options 
           completionBlock:nil]; 
} 

전화를 해야하는 방법과 어떻게 다른 클래스에서 알림을 게시하도록하겠습니다이다. 내 다양한보기 컨트롤러 중 하나를 관찰자로 지정하면 알림이 표시되지만 AppDelegate는 표시되지 않습니다. AppDelegate를 NSNotification 옵저버로 만들 수 없습니까?

답변

3

통지를 수신 할 때 호출되는 메소드에는 NSNotification 인수가 있어야합니다. 그래서, 방법은 다음과 같아야합니다

-(void)noConnectionNotification:(NSNotification*)notification { 
    NSLog(@"received notification"); 
    NSString *notificationString = @"Unable to reach server. Changes will be cached."; 
    NSDictionary *options = @{kCRToastTextKey : notificationString, 
           kCRToastNotificationTypeKey : @(CRToastTypeStatusBar), 
           kCRToastTextAlignmentKey : @(NSTextAlignmentCenter), 
           kCRToastBackgroundColorKey : [UIColor redColor], 
           kCRToastAnimationInDirectionKey : @(CRToastAnimationDirectionTop), 
           kCRToastAnimationOutDirectionKey : @(CRToastAnimationDirectionTop), 
           kCRToastTimeIntervalKey : @(2), 
           }; 
    [CRToastManager showNotificationWithOptions:options 
           completionBlock:nil]; 
} 

그런 다음, 관찰자를 추가하면 다음과 같아야합니다

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(noConnectionNotification:) 
               name:@"No_Connection_Available" object:nil]; 

} 

주 결장 @selector 호출 메소드 이름 뒤에.

+0

시도했지만 여전히 작동하지 않습니다. 나는 'noConnectionNotification' 메쏘드에서 설정된 중단 점을 가지며 절대로 넘어지지 않습니다. –

+0

@JosephToronto'noConnectionNotification :'메소드가 AppDelegate 클래스의 멤버입니까? – kamprath

+0

내가 AppDelegate.h에서 선언했다는 것을 의미한다면, 그렇습니다. –