2013-08-02 50 views
-1

我需要在標籤上顯示本地通知消息。我知道如何在應用程序運行時處理通知的語法。如何在UILabel中顯示本地通知消息?

像這對我AppDelegate.m,

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif { 

NSLog(@"Recieved Notification %@",notif); 


} 

看起來不錯,我可以得到日誌信息。 如何在AppDelegate的標籤中顯示消息?例如這樣。

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif { 

NSLog(@"Recieved Notification %@",notif); 

//Like this concept 
MessageLabel.Text = FromNotificationMessage; 

} 

請幫幫我。我對iOS編程感興趣。怎麼做?

+0

此MessageLabel在哪裏?在哪個級別?您需要將此消息存儲在全局變量或該類的任何變量中,並顯示標籤中的字符串。 –

+0

是這樣的嗎? 'MessageLabel.Text = [NSString stringWithFormat:@「Recieved Notification%@」,notif];' – RdPC

回答

0

–application:didReceiveLocalNotification:你可以發佈一個通知,每次你的班,這是一個觀察者,可以接受它;即使是UIViewController類。

任何一個UIViewController類都可以將文本放入UILabel或任何您想放置的位置。


AppDelegate.m

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)note { 

    NSString *_stringFromNotification = note.alertBody; 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"MyPersonalNotification" object:_stringFromNotification]; 

} 

您的任何 UIVIewController

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [[NSNotificationCenter defaultCenter] addObserverForName:@"MyPersonalNotification" object:nil queue:nil usingBlock:^(NSNotification *note) { 
     NSString *_string = note.object; 
     // ... do whatever you'd like to do with the string 
    }]; 
} 

注意:這僅僅是T的一個他可能的解決方案,這是這個想法的非常簡單的代表。

+0

謝謝@holex。非常好的本地通知表示。它們與推送通知相同嗎?在如何從通知中獲取消息的途中。 – Jarich

+0

@JakeDuldulao,是的,它非常相似,不一樣,但接收通知非常相似。 – holex

+0

@holex這確實是一個不錯的解決方案。但問題是,當應用程序被殺害。 didReceiveLocalNotification在UIViewController的viewDidLoad之前執行。然後在addObserverForName之前執行postNotificationName,並且從不觸發該函數。 – kschaeffler

0
- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif { 

    NSLog(@"Recieved Notification %@",notif); 

    UILabel * MessageLabel = [[UILabel alloc] init]; 
    MessageLabel.frame = CGRectMake(90, 10, 470, 57); 
    MessageLabel.textAlignment = NSTextAlignmentCenter; 
    MessageLabel.text = notif; // put your message String here. 
    [self.window addSubview: MessageLabel]; 

} 
+1

'AppDelegate'類不應該像這樣干擾_view-layer_。 – holex

0

這取決於您想在哪裏顯示帶有通知消息的標籤。如果標籤與任何特定的UIView和相應的控制器相關,則需要在應用程序委託中獲取控制器的引用。一旦你這樣做,你需要通過Controller - > View - > subview(label)來到標籤。現在您可以在應用委託通知接收方法中設置標籤文本。

相關問題