调用通知中心但在IOS中不更新UILabel的值

时间:2013-07-04 14:18:24

标签: ios notifications nsnotificationcenter

我在我的代码中使用推送通知,每当收到通知时,我想更新另一个ViewController中的标签值。

我在AppDelegate中的代码是:

- (void)addMessageFromRemoteNotification:(NSDictionary*)userInfo updateUI:(BOOL)updateUI
{
    NSLog(@"Notification arrived");
    //[mydeals setCode1_id:mydeals.code1_id withString:@"123456"];
    mydeals=[[MyDealsViewController alloc]init];
    NSDictionary* codeDetails=[[NSDictionary alloc] initWithObjectsAndKeys:@"123456",@"Code_id", nil];
    [[NSNotificationCenter defaultCenter] postNotificationName:@"CodeArrived" object:self userInfo:codeDetails];
}

然后在我的其他视图控制器中我有这个代码:

@implementation MyDealsViewController

-(id) init
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(receiveCode:)
                                                 name:@"CodeArrived"
                                               object:nil];
    return self;
}

-(void) receiveCode:(NSNotification*)notification
{
    NSLog(@"received Code: %@",notification.userInfo);
    self.code1_id.text=[NSString stringWithFormat:@"%@",[[notification userInfo] valueForKey:@"Code_id"]];
}

正确打印日志但是当我手动进入该屏幕时,我看到了默认值,就像标签根本没有更新一样。我该怎么办?

2 个答案:

答案 0 :(得分:1)

当你“手动转到”MyDealsViewController时,你必须确保无论你怎么做,它都必须是MyDealsViewController被称为receiveCode的同一个实例。{{1}} 。否则它将使用它的默认值进行初始化。

答案 1 :(得分:0)

您也可以尝试调用[self.code1_id setNeedsLayout];